7

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

你能帮我吗?

4

4 回答 4

5
for file in *\#015
do
   mv -- "$file" "${file%\#015}"
done

您可能需要转义“\”。首先在 tmp 目录中尝试。

于 2012-11-16T16:55:01.173 回答
5

如果您已经rename安装,这将成为一项相当简单的任务:

rename 's/\\#015$//' /root/path/*\\#015

-f如有必要,您可以添加标志以强制覆盖现有文件。

于 2012-11-16T23:02:20.433 回答
1

这就是我过去用一个小外壳解决类似问题的方法。

cd /root/path/
ls | grep '\#015' | sed 's/\(.*\)\\#015/mv & \1/' | sh
于 2012-11-16T16:36:17.487 回答
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 个字符。
于 2012-11-16T16:52:31.387 回答