根据校验和重命名文件

min*_*g99 7 hashsum rename files checksum

我有一个 md5sum 列表和很多我想校验和然后根据 md5sum 列表重命名它们的文件。

列表示例:

d4cd401ade018617629b39efed7b7be4  foo.bar
8fdb07ca55c164e0d5a69eff49fe800e  bar.foo
8b167d01009f066aaf2d6c1ba336d842  foobar
Run Code Online (Sandbox Code Playgroud)

现在我想对当前目录中的每个文件进行校验和,如果校验和与上面的列表匹配,则将其重命名为正确的列。

我怎么能做到这一点?

non*_*yro 3

我还没有完全测试过,它只是理论上有效。需要时替换:

#! /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;
Run Code Online (Sandbox Code Playgroud)

正如我所说,还没有测试过,但它似乎适用于我的盒子。