• ベストアンサー

サブディレクトリも含めて最新のファイルを調べる

Linux 上のあるディレクトリ配下に存在するすべてのファイルの中で(サブディレクトリ配下も含めて) 更新日時が最新のファイルを抽出したいのですが やり方をご存知であれば教えてください。 ディレクトリが一つだけ or 対象が特定できるなら ls -lrt とかで分かりますが 再帰的にすべてのサブディレクトリを対象としたいのです。 できれば1回のコマンド(ワンライナー)で実行できるとありがたいですが、 それはさすがに大変な気がしますので、 あくまでできればということで。。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.3

find $DIR -type f | xargs ls -l --time-style=long-iso | sort -k 6,7 | tail -1 でどうでしょう。ソートキーは、ls のデフォルトオプションによってずれるかもしれないので、見て確認してください。 find に -mtime オプションを追加することで調べるファイルを減らすと良いかと。

sana_7
質問者

お礼

ありがとうございます。見事にワンライナーでした。

その他の回答 (2)

回答No.2

かなり泥臭いやり方ですが、find . -ls 等でまずリストを出して日付順にソートしてあげるのが第一感です。それくらいならパイプは使いますが、1回の実行で可能だと思います。 ただ、日をまたいだり、月をまたいだり、年をまたいだりすると結構大変ですが・・・ 後は、OSの監査機能等を使って更新ログをとってみたり・・・

  • kachansa
  • ベストアンサー率44% (30/67)
回答No.1

findを使うことになるかと思いますが、最新の更新日時の定義は何でしょうか? 100個のファイルがあれば、その中で日付がもっとも新しいという意味でしょうか? 何日とか何時間前に更新なら、findで一発だと思うのですが...

関連するQ&A