目录中的许多文件 ( /root/path/) 都附加了一个奇怪的字符串 ( \#015)。帮我用没有奇怪字符串的常规名称替换它们。
我需要:
/root/path/img1.png\#015
/root/path/img2.jpg
/root/path/img3.png\#015
成为:
/root/path/img1.png
/root/path/img2.jpg
/root/path/img3.png
你能帮我吗?
for file in *\#015
do
mv -- "$file" "${file%\#015}"
done
您可能需要转义“\”。首先在 tmp 目录中尝试。
如果您已经rename安装,这将成为一项相当简单的任务:
rename 's/\\#015$//' /root/path/*\\#015
-f如有必要,您可以添加标志以强制覆盖现有文件。
这就是我过去用一个小外壳解决类似问题的方法。
cd /root/path/
ls | grep '\#015' | sed 's/\(.*\)\\#015/mv & \1/' | sh
您可以使用find和参数替换来执行此操作,如下所示:
#!/bin/bash
find -name '*\\#015' | while IFS= read -r f
do
mv -- "${f}" "${f%?????}"
done
my_script.sh你的脚本中/root/path/,然后运行它chmod +x my_script.sh && ./my_script.sh/root/path/。解释:
find -name '*\\#015': 查找所有以\#015 mv "${f}" "${f%?????}"将其从旧名称重命名为新名称,并删除文件名中的最后 5 个字符。