単一の呼び出しでファイルが多すぎる場合は、ls出力を時間でソートします。

単一の呼び出しでファイルが多すぎる場合は、ls出力を時間でソートします。

lsこれらのオプションを使用すると、出力を時間でソートできることがわかります-t

ファイルが多すぎて一度のls呼び出しに合わない場合は、通常xargs(またはfind ... -exec ... {} +)を使用してls複数回呼び出すことができます。

この2つをどのように組み合わせることができますか?コマンドラインに入ることができるよりも多くのファイルがあり、時間ごとに並べ替えてリストしたいと思います。コマンドラインに正確に1000個のファイル名があり、3000個のファイルが存在すると仮定すると、これが実行され、最後の1000個のファイルは最初の1000個のファイルよりも早い修正時間を見る可能性が高いfind . -type f -exec ls -t {} +ため機能しません。関連または同等の操作が実行される可能性がないようです。このアプローチは基本的に欠陥があるようですが、方法が見つかりません。ls -t [first 1000 files]; ls -t [second 1000 files]; ls -t [last 1000 files]findxargsする働く

ベストアンサー1

ls -tそれ自体は、コマンドラインにリストする必要なしに、現在のディレクトリ内のすべてのファイルをその順序でリストします。

再帰的な動作が必要なfind場合、またはファイルに対して別のテストを実行している場合は、タイムスタンプ付きのエントリを作成してGNUオプションで並べ替えるfindことができます。それは次のとおりです。statfind-printf

find . -type f -printf '%T@ %p\0' | sort -zn

-printf '%T@ %p\0'ヌルで区切られたUnixタイムスタンプ(%T@) - ファイル名(%p)のペアを生成します。sort -zまた、ファイル名のセキュリティを確保するためにnullで区切られたレコードを使用する非標準のGNU拡張です。sortほとんどのBSDもこのオプションをサポートしていますが、-printf私が知っている限りGNUのみをサポートしています。

その出力をファイル名または必要な他の形式に切り捨てることができます。

おすすめ記事