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]
find
xargs
する働く
ベストアンサー1
ls -t
それ自体は、コマンドラインにリストする必要なしに、現在のディレクトリ内のすべてのファイルをその順序でリストします。
再帰的な動作が必要なfind
場合、またはファイルに対して別のテストを実行している場合は、タイムスタンプ付きのエントリを作成してGNUオプションで並べ替えるfind
ことができます。それは次のとおりです。stat
find
-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のみをサポートしています。
その出力をファイル名または必要な他の形式に切り捨てることができます。