目录( /root/path/
)中的许多文件都附加了一个奇怪的string( \#015
)。 帮我把它们replace成没有奇怪string的常规名字。
我需要:
/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 -rf do mv -- "${f}" "${f%?????}" done
/root/path/
一个名为my_script.sh
的脚本中,然后通过chmod +x my_script.sh && ./my_script.sh
运行它 /root/path/
下的所有子文件夹。 说明:
find -name '*\\#015'
:找到所有以\#015
结尾的文件 mv "${f}" "${f%?????}"
将其从旧名称重命名为新名称,并删除文件名中的最后5个字符。