我知道如何重命名文件等,但我遇到了麻烦。
我只需要在for循环中重命名test-this
。
test-this.ext
test-this.volume001+02.ext
test-this.volume002+04.ext
test-this.volume003+08.ext
test-this.volume004+16.ext
test-this.volume005+32.ext
test-this.volume006+64.ext
test-this.volume007+78.ext
答案 0 :(得分:92)
如果您将所有这些文件放在一个文件夹中并且您使用的是Linux,则可以使用:
rename 's/test-this/REPLACESTRING/g' *
结果将是:
REPLACESTRING.ext
REPLACESTRING.volume001+02.ext
REPLACESTRING.volume002+04.ext
...
rename
可以将命令作为第一个参数。这里的命令由四部分组成:
s
:用另一个字符串替换字符串的标志test-this
:您要替换的字符串REPLACESTRING
:要用,和g
:一个标志,指示应替换搜索字符串的所有匹配项,即如果文件名为test-this-abc-test-this.ext
,结果将为REPLACESTRING-abc-REPLACESTRING.ext
。有关标志的详细说明,请参阅man sed
。
答案 1 :(得分:41)
使用rename
,如下所示:
rename test-this foo test-this*
这会将test-this
替换为文件名中的foo
。
如果您没有rename
使用for
循环,如下所示:
for i in test-this*
do
mv "$i" "${i/test-this/foo}"
done
答案 2 :(得分:9)
我在OSX上,而我的bash没有rename
作为内置函数。我在我的.bash_profile
中创建了一个函数,该函数接受第一个参数,该参数是文件中只应匹配一次的模式,并不关心它后面的内容,并替换为参数2的文本。 / p>
rename() {
for i in $1*
do
mv "$i" "${i/$1/$2}"
done
}
test-this.ext
test-this.volume001+02.ext
test-this.volume002+04.ext
test-this.volume003+08.ext
test-this.volume004+16.ext
test-this.volume005+32.ext
test-this.volume006+64.ext
test-this.volume007+78.ext
rename test-this hello-there
hello-there.ext
hello-there.volume001+02.ext
hello-there.volume002+04.ext
hello-there.volume003+08.ext
hello-there.volume004+16.ext
hello-there.volume005+32.ext
hello-there.volume006+64.ext
hello-there.volume007+78.ext