找到多个重命名

时间:2018-03-03 12:11:24

标签: linux bash file-rename

我需要使用多种模式重命名数百万个文件。 有些文件名有几个我想要替换的字符。 为了不多次扫描所有文件,我想一次完成所有替换。

我尝试了这些脚本:

find . -type f -name '*\.jpg' -exec rename 's/%c3%a0/\xc3\xa0/g' {} \; -exec rename 's/%c3%a9/\xc3\xa9/g' {} \; -exec rename 's/%c3%aa/\xc3\xaa/g' {} \;

find . -type f -name '*\.jpg' -exec rename 's/%c3%a0/\xc3\xa0/g' | -exec rename 's/%c3%a9/\xc3\xa9/g' | -exec rename 's/%c3%aa/\xc3\xaa/g'

这些脚本只替换一个字符。

帮助。

1 个答案:

答案 0 :(得分:2)

我认为问题在于您的第一个rename重命名该文件,因此当您在同一个文件上exec第二个rename时,它已经消失,因为它已被重命名第一个!

我认为你可以一次性更好地完成所有替换,每个文件也会多次执行rename次执行:

find ... -exec rename 's/a/b/g; s/c/d/g; s/e/f/g' {} \;