すべてのファイルを同じハッシュ値に置き換える

すべてのファイルを同じハッシュ値に置き換える

ターゲットパスで、ソース.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" "{}"' \;

おすすめ記事