ターゲットパスで、ソース.fileと同じ名前を持ち、ソース.fileと同じ名前を持つすべてのファイルをnew.fileに置き換えたいと思います。これを行うコマンドは何ですか?
ファイルの内容を更新し、特定のパスにあるそのファイルの他のすべてのコピーも更新したいとします。
ほとんどの場合、次のコードが機能します。
find /target_path/ -iname "original.file" -exec cp new.file '{}'
しかし、オリジナルファイルたとえば、 readme.txt を使用すると、無関係なファイルが多く上書きされます。
ベストアンサー1
これを行うには、実行を決定する前にチェックサムが一致するかどうかをテストし、検索引数cp
でサブシェルを実行する必要があります。-exec
これを行う必要があります。
find /target_path/ -iname "original.file" -exec bash -c \
'[[ $(md5sum "original.file") = $(md5sum "{}") ]] && cp "new.file" "{}"' \;