我需要获取目录文件名的 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