Files
根據校驗和重命名文件
我有一個 md5sum 列表和很多我想校驗和然後根據 md5sum 列表重命名它們的文件。
列表範例:
d4cd401ade018617629b39efed7b7be4 foo.bar 8fdb07ca55c164e0d5a69eff49fe800e bar.foo 8b167d01009f066aaf2d6c1ba336d842 foobar
現在我想對目前目錄中的每個文件進行校驗和,如果校驗和與上面的列表匹配,則將其重命名為正確的列。
我怎麼能這樣做?
我還沒有完全測試,它只是理論上的工作。在需要的地方替換:
#! /bin/bash for II in * do if [ -f "$II" ]; then TMPV=$(md5sum "$II") MD="${TMPV%\ \ *}" TMPV=$(grep "$MD" hashes.txt) if [ ! -z "$TMPV" ]; then FN="${TMPV#*\ \ }" echo "Found: $II" echo "MD5 is: $MD" echo "Which matches $FN in hashes database" echo "Will Rename $II TO $FN" echo "" # CAREFUL, RENAME CMD: mv "$II" "$FN" fi; fi; done;
正如我所說,尚未對其進行測試,但它似乎適用於我的盒子。
首先,我不會聲稱這是最深刻的解決方案,但這是一種方法。
假設您有一個帶有校驗和和文件名的文件,
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