検索文の組み合わせ

検索文の組み合わせ

次の2つのコマンドをどのように組み合わせることができますか?所有者とファイルサイズを含むファイルを取得したいです。

find /test -type f -size +$(df -k /test| awk 'NR == 3 { printf "%d", 
$1/4 }') -exec du -sh {} +


find /test -type f -size +$(df -k /test | awk 'NR == 3 { printf "%d", 
$1/4 }') -exec stat -c '%U' {} +

答え1

2つの可能なオプションがあります。findこれを組み合わせるさまざまな方法に焦点を当てるために、ほとんどの説明を削除しました。

  1. 文をfind「find-shell」に結合します。

    find ... -exec sh -c 'printf "%s - %s - %s\n" "$1" "$(stat -c %U "$1")" "$(du -sh "$1")"' find-sh {} \;
    

これにより、ファイルは一度に1つずつシェルコマンドに渡されます。これはコマンドと単一のフォーマットstatステートメントに結合されます。 2番目のオプションは、一度に複数のファイルをコマンドに渡します。duprintfstat

  1. 機能を以下と比較しますstat

    find ... -exec stat -c '%n %U %s' {} +
    

このstatオプションはサイズをバイト単位で印刷し、du -hフォーマットとは若干異なります。


利用可能なGNU拡張がある場合は、3番目のオプションがあります-printf

find ... -printf '%p %u %s\n'

関連情報