ファイルを読み取り、修正版を出力するコマンドがありますstdout
。
./convert /path/to/file
このコマンドをディレクトリ内のすべてのファイルにどのように繰り返し適用できますか?上記のコマンドの結果として、各ファイルの既存の内容が上書きされます。?
私が見つけたこの問題これは非常に似ていますが、提供されているすべてのソリューションには結果を単一のファイルに出力することが含まれますが、これは私が望むものではありません。
ベストアンサー1
私が正しく理解したら、次のようにファイルを変換できます。
./convert /path/to/file >/path/to/file.new
mv /path/to/file.new /path/to/file
ディレクトリツリーのすべてのファイルにコマンドを適用するには、次のようにします。find
便利です。各ファイルに対して複雑なコマンドを実行する必要があるため、明示的にシェルを呼び出す必要があります。
find /path/to/top/directory -type f -exec sh -c '
/path/to/convert "$0" >"$0.new" &&
mv "$0.new" "$0"
' {} \;