目录中的许多文件 ( /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 个字符。