linux - 查找多个重命名

标签 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'

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

请帮忙。

最佳答案

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

我认为一次性完成所有替换会更好,它还可以节省每个文件多次执行 rename 的时间:

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

关于linux - 查找多个重命名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49083961/

相关文章:

linux - 如何在我的 Linux 机器上找到主 IP 地址?

Linux 面向行的文本文件操作

带 ls $variable 的 bash 脚本

bash - 关于如何在 shell 脚本中运行 impala-shell

java - 文件删除和重命名问题

regex - 重命名 linux 目录中文件的最佳过程

c++ - 将静态库(不带 -fPIC)链接到 64 位操作系统上的共享库

linux - 适合 Linux 的 SVG 渲染器?

R_LIBS_USER 被 R 忽略

python - Windows 上的 os.rename 引发 WindowsError 而不是 OSError