1

我正在尝试将 *%3A*%3A*.xml 之类的文件重命名为:: *.xml。

MODFILE=`echo $1 | tr -s '"%3A"' ':'`
mv $1 "${MODFILE}" 

只要我没有超过一次直接连续的%3A,就可以完成这项工作。我进行了很多搜索,发现有几个脚本可以重命名第一次出现或仅在我只有一次出现时才起作用。

例如,这只适用于一次出现:

for files in *%3A*.xml
do
  mv "$files" "${files/%3A/:}"
done 

有人可以帮我吗?我对 shellscripting 不太满意:/

4

2 回答 2

3

你快到了,如果你使用:

mv "$files" "${files//%3A/:}"

(两个斜杠而不是一个),那么所有出现的地方都将被替换。

于 2012-07-27T08:57:13.063 回答
1

最简单的方法是使用重命名

 rename %3A : *

它可能只需要第一次出现,但你必须再次执行它。

Rename 也可以接受正则表达式作为输入,但这取决于系统。

于 2012-07-27T09:02:26.990 回答