找到多个重命名

问题描述 投票:1回答:1

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

我试过这些脚本:

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'

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

请帮忙。

linux bash file-rename
1个回答
2
投票

我认为问题是你的第一个rename重命名文件,所以当你在同一个文件上exec你的第二个rename时,它已经消失了,因为它已被第一个重命名!

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

find ... -exec rename 's/a/b/g; s/c/d/g; s/e/f/g' {} \;
© www.soinside.com 2019 - 2024. All rights reserved.