14歳の自分に衝撃の事実を告げてください

Linux 上のあるディレクトリ配下に存在するすべてのファイルの中で(サブディレクトリ配下も含めて)
更新日時が最新のファイルを抽出したいのですが
やり方をご存知であれば教えてください。

ディレクトリが一つだけ or 対象が特定できるなら ls -lrt とかで分かりますが
再帰的にすべてのサブディレクトリを対象としたいのです。

できれば1回のコマンド(ワンライナー)で実行できるとありがたいですが、
それはさすがに大変な気がしますので、
あくまでできればということで。。

A 回答 (3件)

find $DIR -type f | xargs ls -l --time-style=long-iso | sort -k 6,7 | tail -1



でどうでしょう。ソートキーは、ls のデフォルトオプションによってずれるかもしれないので、見て確認してください。
find に -mtime オプションを追加することで調べるファイルを減らすと良いかと。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/11/10 08:20

かなり泥臭いやり方ですが、find . -ls 等でまずリストを出して日付順にソートしてあげるのが第一感です。

それくらいならパイプは使いますが、1回の実行で可能だと思います。
ただ、日をまたいだり、月をまたいだり、年をまたいだりすると結構大変ですが・・・

後は、OSの監査機能等を使って更新ログをとってみたり・・・
    • good
    • 0

findを使うことになるかと思いますが、最新の更新日時の定義は何でしょうか?


100個のファイルがあれば、その中で日付がもっとも新しいという意味でしょうか?
何日とか何時間前に更新なら、findで一発だと思うのですが...
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報