チェックサムに基づいてファイル名を変更する

チェックサムに基づいてファイル名を変更する

私はmd5sumリストと多くのファイルを持っており、チェックサムを計算してからmd5sumリストに基づいて名前を変更したいと思います。

リストの例:

d4cd401ade018617629b39efed7b7be4  foo.bar
8fdb07ca55c164e0d5a69eff49fe800e  bar.foo
8b167d01009f066aaf2d6c1ba336d842  foobar

現在のディレクトリのすべてのファイルをチェックし、チェックサムが上記のリストと一致する場合は、名前を正しい列に変更したいと思います。

どうすればいいですか?

ベストアンサー1

まず、これが最も深い解決策であると主張しません。しかし、それはアプローチです。

チェックサムとファイル名を持つファイルがあると仮定すると、filelist.txt次のように使用できます。

while read -r checksum fname; do for f in file*; do if [[ $checksum == $(md5sum "$f" | cut -d' ' -f1) ]]; then mv "$f" "$fname"; fi ; done ; done < filelist.txt

おすすめ記事