1. ホーム
  2. バッシュ

[解決済み】ディレクトリ内の最新更新ファイルを再帰的に検索する方法は?

2022-04-18 04:54:25

質問

どうやら ls は、再帰的な呼び出しを行う際に、ファイルを正しくソートしません。

ls -altR . | head -n 3

あるディレクトリ(サブディレクトリを含む)内で、最も最近更新されたファイルを見つけるにはどうすればよいですか?

どのように解決するのですか?

find . -type f -printf '%T@ %p\n' \
| sort -n | tail -1 | cut -f2- -d" "

巨大なツリーでは sort を使用して、すべてをメモリ内に保持することができます。

%T@ は、unixのタイムスタンプのように修正時刻を表示します。 sort -n は数値でソートします。 tail -1 は最後の行(最も高いタイムスタンプ)を取ります。 cut -f2 -d" " は、出力から最初のフィールド(タイムスタンプ)を切り捨てます。

編集する と同じように -printf はおそらくGNUオンリーで、ajrealsの使い方は stat -c もそうです。BSDでも同じことができますが、書式設定のオプションが異なります( -f "%m %N" と思われる)

そして、私は複数形の部分を見逃しました。もし、それ以上を望むなら その の最新ファイルであれば、tail 引数を大きくすればよい。