在 Mac OS X 中重命名多个文件,批处理

mat*_*ath 58 regex batch command-line rename macos

我曾经通过重命名命令在 Linux 中重命名文件:

rename 's/old_pattern/new_pattern/g' *glob
Run Code Online (Sandbox Code Playgroud)

Mac OS X (Snow Leopard) 中是否有类似的东西?

jua*_*blo 51

使用Homebrew,OS X 的包管理器:

brew install rename 
Run Code Online (Sandbox Code Playgroud)

然后您可以运行与renameLinux 中相同的命令。

  • 您也可以使用 MacPorts 包:port install p5-file-rename (3认同)
  • @MiquelAdrover:但是对于端口,您需要使用 `rename-5.22`(其中 22 是已安装的版本)而不是 `rename` (2认同)

gho*_*ppe 29

明智地使用 ZSH 的力量(zsh如果您是那些默认不使用它的可怜人之一,请在终端中输入):

autoload zmv
zmv '(*).htm' '$1.html'
Run Code Online (Sandbox Code Playgroud)

ZMV 遵循MMV 语法

  • @brubelsabs:是的,**zmv 可以进行正则表达式替换**。对于匹配 `*user*.html` 的文件,将扩展名更改为 `.html` 并将所有出现的 `rc` 更改为 `final`:`zmv '(*user*).htm' '${1// rc/final}.html'` @ghoppe:我认为您的答案中的 *zmv* 示例需要 `-w` 或其通配符周围的括号。 (4认同)

mat*_*ath 21

笨拙的我:

for i in *.yourfiles; do mv "$i" "`echo $i | sed 's/old/new/g'`"; done 
Run Code Online (Sandbox Code Playgroud)

如果你想像我经常这样使用它:

rename 's/old/new/' *.files
Run Code Online (Sandbox Code Playgroud)

我建议在 ~/bin/rename 中使用这个小脚本:

#!/usr/bin/env zsh
SUBSEXPR=$1
shift
for i in $@; do mv $i `echo "$i" | sed $SUBSEXPR`; done
Run Code Online (Sandbox Code Playgroud)


laj*_*tte 5

您可以尝试安装MacPorts并安装renameutils软件包:

重命名工具@0.10.0 (sysutils)

renameutils 是一组程序,旨在使重命名文件更快、更省事