私は次のようなものを使用してファイルのリストを見つけることができます:
find /path/to/files -type f
そして、私は次のいずれかで単一のファイルの内容をクリアすることができます:
> filename
echo -n > filename
cat /dev/null > filename
出力リダイレクトを含まないコマンドを使用して、次のようなことを行うことができます。
find /path/to/files -type f -exec file '{}' \;
ただし、これは機能しません。
find /path/to/files -type f -exec echo -n > '{}' \;
Findの-exec
または| xargs
を使用してコマンドを作成し、ファイルをクリアするこれらのコマンドの1つにファイルリストをパイプすることができないようです。これどうやってするの?
find /path/to/files -type f -exec /bin/sh -c "> '{}'" ';'
はあなたが望むことをするべきです。 execの詳細な動作の詳細については、 find(1) を参照してください。ただし、この呼び出しはコマンドを1回実行し、ファイル名を{}
の場所に配置します。
Xargsにコマンドに単一のファイル名のみを渡すように指示することも、find /path -type f | while read file; do echo -n > "$file"; done
を使用してシェルレベルでそれを行うこともできます。
楽しみのために、ここに別のオプションがあります:
find /path/to/files -type f -exec dd if=/dev/null of={} \;