find -exec lsの出力ソート

find -exec lsの出力ソート

ファイル名で出力をアルファベット順に並べ替えることはできますかfind … -exec ls -ls ;

これは私のcronコマンドです。

find /home/setefgge/public_html -type f -ctime -1 -exec ls -ls {} \;

このコマンドはほとんどの場合にうまく機能します。ただし、結果は意味のある順序で並べ替えられません。ファイル名フィールドに基づいてソートすると非常に役立ちます。

ベストアンサー1

あなたのファイル名に改行文字が含まれていないとします。

find /home/setefgge/public_html -type f -ctime -1 -exec ls -nls {} + | sort -k 10

呼び出しをバッチ処理する+のではなく、;シャットダウン操作を使用すると、作業が速くなる可能性があります。コマンドを使用してパイプラインを並べ替えることができます。 10番目のフィールドからソートを開始するように指示します(最初の9つのフィールドはメタデータです。ブロック、権限、リンク数、ユーザー、グループ、サイズ、および3つの日付/時刻フィールド)。このオプションは、ユーザーまたはグループ名にスペースが含まれるリスクを防ぐために、ユーザーとグループに数値を使用することを示します。-execlssort-nls

または、zshを使用すると、次のようにしてすべての名前の仮定を削除できます。グローバル予選ファイルの収集と並べ替えzargslsコマンドラインが長すぎる場合は、何度も実行してください。並べ替えを防ぐには、GNU ls(特にそのオプション)が必要です(代わりにzshを使用してシミュレーションすることです)-flslszstat)。

autoload -U zargs
zargs -- /home/setefgge/public_html/**/*(.c-2) -- ls -lnsf

おすすめ記事