批量替换文件名中的另一个子串


5

我有一堆命名与此类似的文件:

1_1.pngEND1_1.png

你会如何取代 .pngEND_

我用谷歌搜索了这个问题并尝试了5个以上的解决方案,其中没有在mac上工作。


如果您编辑帖子以详细说明您尝试使用的一个解决方案以及您使用的链接,我们可能能够纠正对您不起作用的内容。 (或指向批量重命名文件的更好工具)。我会使用bash或Python,具体取决于从备份恢复的容易程度,但是 那些工具或只是使用 mv 可能会适得其反 如果你还不熟悉所需的语法..
bmike

2
我建议你看看这个可敬的人 perl rename - search.cpan.org/~pederst/rename-1.9/bin/rename.PL
fd0

Answers:


8

例如,有很多方法可以做到这一点

for i in *pngEND*.png; do [[ -e ${i/.pngEND/_} ]] || echo mv "$i" "${i/.pngEND/_}"; done

除掉 echo 如果输出看起来合理。


14

除非您需要可以在脚本中使用的解决方案,否则可以直接在Finder中执行此操作。

  • 选择要重命名的文件
  • 右键单击其中一个,然后选择 重命名N项...... (其中N是所选文件的数量)
  • 选择 替换文字 下拉菜单中的选项
  • 输入要替换的文本(“.pngEND”)和要替换它的文本(“_”)
  • 点击 改名

1
凉。不知道这个
sanjihan

2

如果您不熟悉终端或脚本,可以使用名为的mac app NameChanger (免费使用)。您可以在文件名/文件扩展名上批量更改几乎所有内容。


1
但是,对于这种特定类型的批量重命名,不需要第三方应用程序 - Finder可以执行此操作。
calum_b

1

如果我不得不这样做,我会用 重命名命令 可通过安装 自制

例:

建立:

mac:test user$ touch 1_1.pngEND1_1.png

mac:test user$ ls
1_1.pngEND1_1.png

运行重命名命令:

mac:test user$ rename 's/\.pngEND/_/' *.pngEND*

结果:

mac:test user$ ls
1_1_1_1.png

1

我也用过perl rename 成功的工具。它还有一个干运行选项,因此您可以在执行更改之前进行测试。


我是否需要安装任何东西才能使用perl命令?
sanjihan

那只是历史。它只是包管理器中包含的工具,可以在基于Linux / GNU的环境中使用。它可能就像它自己一样 perl-rename
Pysis
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.