如何缩短重命名时间?

2024-10-02 00:29:28 发布

您现在位置:Python中文网/ 问答频道 /正文

所以,我有~6k个文件,我需要检查,如果需要,重命名。 原因是,我有一些图像名称,我有我不需要的重音字符,需要重命名为简单字符。 例如:

Bas-v-s-Broek-DTR-025-Dobszékállíthitó-magasságú.jpg

Bas-v-s-Broek-DTR-025-Dobszek-Allitato-magassagu.jpg

我现在正在使用“查找并重命名”进行此项工作:

find . -type f -exec rename 's/ ö|ő|ó|ö/o/g' '{}' \; -exec rename 's/ ü|ű|ú/u/g' '{}' \; -exec rename 's/ á/a/g' '{}' \; -exec rename 's/ é/e/g' '{}' \; -exec rename 's/ í/i/g' '{}' \;

现在的问题是需要的时间超过30-35分钟。我能以某种方式减少这个过程的时间吗?我需要递归检查所有子文件夹


Tags: 文件图像名称时间原因字符重命名exec
2条回答

您应该致力于减少rename的调用次数,因为fork+execve是相对昂贵的操作

您可以通过将所有模式合并到一个rename命令中,然后让find使用+而不是\;一次在多个文件上执行它来实现这一点:

find . -type f -exec \
   rename 's/ö|ő|ó|ö/o/g; s/ü|ű|ú/u/g; s/á/a/g; s/é/e/g; s/í/i/g' '{}' +

我想我找到了完美的解决方案。 查找有正则表达式选项(我不知道),现在快多了! 鸡蛋,我如何使用:

find . -regex '.*[á].*' -type f -exec rename 's/á/a/g' '{}' \;

相关问题 更多 >

    热门问题