目录中的许多文件(/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
你能帮忙吗?
答案 0 :(得分:5)
for file in *\#015
do
mv -- "$file" "${file%\#015}"
done
你可能需要逃避“\”。首先在tmp目录中尝试。
答案 1 :(得分:5)
如果您安装了rename
,这将成为一项相当简单的任务:
rename 's/\\#015$//' /root/path/*\\#015
如果需要,您可以添加-f
标志以强制覆盖现有文件。
答案 2 :(得分:1)
这就是我过去用一点shell解决类似问题的方法。
cd /root/path/
ls | grep '\#015' | sed 's/\(.*\)\\#015/mv & \1/' | sh
答案 3 :(得分:0)
您可以使用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个字符。