- ベストアンサー
サブディレクトリも含めて最新のファイルを調べる
Linux 上のあるディレクトリ配下に存在するすべてのファイルの中で(サブディレクトリ配下も含めて) 更新日時が最新のファイルを抽出したいのですが やり方をご存知であれば教えてください。 ディレクトリが一つだけ or 対象が特定できるなら ls -lrt とかで分かりますが 再帰的にすべてのサブディレクトリを対象としたいのです。 できれば1回のコマンド(ワンライナー)で実行できるとありがたいですが、 それはさすがに大変な気がしますので、 あくまでできればということで。。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
find $DIR -type f | xargs ls -l --time-style=long-iso | sort -k 6,7 | tail -1 でどうでしょう。ソートキーは、ls のデフォルトオプションによってずれるかもしれないので、見て確認してください。 find に -mtime オプションを追加することで調べるファイルを減らすと良いかと。
その他の回答 (2)
- wildcat-yp
- ベストアンサー率37% (303/813)
回答No.2
かなり泥臭いやり方ですが、find . -ls 等でまずリストを出して日付順にソートしてあげるのが第一感です。それくらいならパイプは使いますが、1回の実行で可能だと思います。 ただ、日をまたいだり、月をまたいだり、年をまたいだりすると結構大変ですが・・・ 後は、OSの監査機能等を使って更新ログをとってみたり・・・
- kachansa
- ベストアンサー率44% (30/67)
回答No.1
findを使うことになるかと思いますが、最新の更新日時の定義は何でしょうか? 100個のファイルがあれば、その中で日付がもっとも新しいという意味でしょうか? 何日とか何時間前に更新なら、findで一発だと思うのですが...
お礼
ありがとうございます。見事にワンライナーでした。