我需要对文件目录的文件名进行 md5 处理

我需要对文件目录的文件名进行 md5 处理

我需要获取目录文件名的 md5sum。可能类似于以下内容:

mv *.html md5sum(*).html

有人能指出我需要运行什么样的命令才能做到这一点吗?

答案1

也许是这样的:

for i in *.html
do
    echo mv "$i" "$(md5sum <<<"${i%.html}" | awk '{print $1".html"}')"
done

${i%.html}在 bash 中是变量i(当前文件名)的内容,.html从末尾删除。awk '{print $1".html"}'打印输出的第一个字段,并.html在其后附加。我们需要这个,因为在输出中md5sum添加了一个-,因为它是从标准输入读取的:

$ md5sum <<<foo
d3b07384d113edec49eaa6238ad5ff00  -
$ md5sum <<<foo | awk '{print $1}'
d3b07384d113edec49eaa6238ad5ff00

例子:

$ for i in *.html
do
 echo mv "$i" "$(md5sum <<<"${i%.html}" | awk '{print $1".html"}')"
done
mv default.html de2b14ae7499f90736fc4a92327553a5.html
mv page.html 2adf521149526dde524f030851c7f903.html
mv post.html 0c0d03edf4e145ffd75eafb6d73deaa7.html

echo一旦您确认命令运行正常,就删除实际移动的文件。

如果你想要的效果echo -n,你可以改用:

for i in *.html
do
    echo mv "$i" "$(echo -n "${i%.html}" | md5sum | awk '{print $1".html"}')"
done

相关内容