Igo*_* V. 5 scripting hashsum rename
我想将一些文件重命名为其内容的 MD5 总和;例如,如果文件foo为空,则应将其重命名为d41d8cd98f00b204e9800998ecf8427e.
它必须是脚本还是我可以使用类似rename工具的东西?
格伦的回答很好;这是对多个文件的改进:
md5sum file1 file2 file3 | # or *.txt, or whatever
while read -r sum filename; do
mv -v "$filename" "$sum"
done
Run Code Online (Sandbox Code Playgroud)
如果您使用find或类似的方式生成文件,您可以将md5sum调用替换为类似的内容find . <options> -print0 | xargs -0 md5sum(输出也通过管道传输到 shell 循环中)。
这是获取 的输出md5sum,它由多行和一个总和,然后是它对应的文件组成,并将其输送到一个 shell 循环中,该循环读取每一行并发出一个mv命令,将文件从原始名称重命名为总和。任何具有相同总和的文件都将被覆盖;但是,除非出现异常情况(例如,如果您正在处理 md5 哈希冲突),这将意味着它们具有相同的内容,因此无论如何您都不会丢失任何数据。如果需要对每个文件引入其他操作,可以将它们放入循环中,引用变量$filename和$sum,分别包含原始文件名和MD5和。