ディレクトリ全体で「ls」を実行せずに「ls」スタイルの出力に最近変更されたファイルを一覧表示しますか?

ディレクトリ全体で「ls」を実行せずに「ls」スタイルの出力に最近変更されたファイルを一覧表示しますか?

数万のファイルを含むディレクトリがあります。最近変更されたファイル(最後の日に変更されたファイルなど)を一覧表示したいと思います。

次のコマンドは機能しますが、lsフォルダ内のすべてのファイルに影響を与えるため、遅くなります。

ls -rt | tail -n 10

次のコマンドは高速ですが、出力はそれほど詳細ではありませんls

find -mtime -1

ls最近変更されたファイル(設定番号または日付別)を同様の出力にすばやく一覧表示する方法はありますか?

ベストアンサー1

少なくともGNUとFreeBSDには、次のような出力を生成するfindthisがあります。-lsls

$ find . -ls
   392815      4 drwxr-xr-x   2 user  group      4096 Jul 22 18:39 .
   392816      0 -rw-r--r--   1 user  group         0 Jul 22 18:39 ./foo.txt
   392818      0 -rw-r--r--   1 user  group         0 Jul 22 18:39 ./bar.txt

GNU findはまた、操作の形で非常に設定可能な出力を提供します-printf

言い換えれば、何があなたをlsそんなに遅くするのか疑問に思います。どちらもディレクトリ全体を読み、すべてのファイルを呼び出してfind日付を見つける必要があるため、大きな違いはありません。ファイル全体のリストを並べ替える必要があるため、ファイル数が多すぎると影響があります。この場合、ファイルを別のディレクトリに分散することを検討することができます(おそらくファイルの日付に基づいて)。削除して使用しないことが役に立ちます。lslstat()ls-rheadtail

おすすめ記事