フォルダ構造内の同じファイルの最新コピーを見つける

フォルダ構造内の同じファイルの最新コピーを見つける

フォルダ構造からfoo.txtパスを取得する必要があります。この構造には複数のfoo.txtファイルがありますが、最新のファイルを自動的に見つける必要があります。提案?

答え1

find . -iname foo.txt -exec ls -t "{}" \+ | head -n 1

答え2

これは事件ですzshのglob修飾子私が見たことがあれば。

cat **/foo.txt(om[1])
  • omファイルを年齢に応じて並べ替えます(例:変更時間、最新のアイテム順)。
  • [1]最初の一致のみが選択されます。

別のシェルから呼び出してファイル名を使用したい場合は、次のものを使用できます。

latest_foo=$(zsh -c 'print -r -- **/foo.txt(om[1])')

しかし、zshで完全なスクリプトを書くこともできます。

答え3

 find . -iname foo.txt -printf '%CYmd %p%f' | sort -n -t ' ' -k 2 | head -n 1

関連情報