OS Xでコマンドライン「find」で見つかったファイルを変更日付順に並べ替えるにはどうすればよいですか?


13

Mac OS Xターミナルを使用して、find変更日(最新のものが最初)で結果を並べ替えるコマンドをどのように記述しますか?

同様の質問はすでにありますが、それらはGNU findとPOSIX に言及していますが、Mac OS XがGNUかPOSIXか、それとも何か他のものかはわかりません。

回答:


16

OS Xは完全にPOSIXに準拠しています。

そのような何かがすべきです:

find . -type f -name "*.txt" -print0 | xargs -0 ls -tl

いくつかのメモ:

  • -tオプションlsはでソートされmtimeます。
  • xargsファイル名を引数としてに渡すために使用されますls。名前にスペースが含まれているファイルがある場合は-print0、in find-0in を使用する必要があることに注意してくださいxargs。また、引数の最大数は変数によって制限されARG_MAXます。これらの数を調べるには、と入力しgetconf ARG_MAXます。
  • -r並べ替え順序を逆に指定できます(→最も古いファイルが最初)
  • その他findlsオプションは、通常どおり、マニュアルに記載されています(man findまたはman ls)。

ls -ltr順序を逆にします。
ダニエルベック

もちろん、XeはそれらをARG_MAXファイル名文字のグループ(わずかに小さい)内でソートするだけです。
JdeBP 2011年

うん、@ JdeBPとDanielを追加してくれてありがとう。getconf ARG_MAXその番号が表示されます。
slhck

私の問題は、このコマンドをapplescriptで使用していて、そのファイルの内容を読み取るために結果を使用していたことです。ただし、結果にはファイル名だけでなく日付情報も含まれます。シェルスクリプトを実行します。 -1 "はこれを返します->" -rw ------- @ 1 akw staff 5512 Jun 19 07:52 /Users/akw/Library/Preferences/ByHost//com.apple.windowserver.1FC3A841-2C0C- 5F48-B746-1DEE064F6D12.plist "
ザダム

@zadamはのls -t代わりに使用しますls -tl-lあなたの日付を含む長いリストを提供します。あなたが何をしようとしているのか正確には知りませんでしたので、申し訳ありませんmtime
slhck
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.