次の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
これを組み合わせるさまざまな方法に焦点を当てるために、ほとんどの説明を削除しました。
文を
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番目のオプションは、一度に複数のファイルをコマンドに渡します。du
printf
stat
機能を以下と比較します
stat
。find ... -exec stat -c '%n %U %s' {} +
このstat
オプションはサイズをバイト単位で印刷し、du -h
フォーマットとは若干異なります。
利用可能なGNU拡張がある場合は、3番目のオプションがあります-printf
。
find ... -printf '%p %u %s\n'