在Mac OS X中重命名许多文件,进行批处理


57

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

rename 's/old_pattern/new_pattern/g' *glob

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


以下文章介绍了如何rename在Mac OS X 上安装:macosxhints.com/article.php?story=20050630022203488
Paul R 2010年

反引号未出现在您的评论中-您可能应该将此添加为答案或编辑问题以包括您的解决方案。
Paul R 2010年

1
我找到的最好的快速解决方案是使用内置的Automator。请查看本文,以获取简单的逐步帮助:tuaw.com/2008/11/11/…– nilay 2010
6

如果没有评论,我会投票支持nilay的答案...
voidstate

Answers:


49

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

brew install rename 

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


3
您也可以使用MacPorts软件包:port install p5-file-rename
Miquel Adrover

2
@MiquelAdrover:但是您需要使用端口rename-5.22(已安装的版本是22)而不是rename
mems

您可以重命名符号链接sudo mv /opt/local/bin/rename-XXX /opt/local/bin/rename
Ako

26

明智地使用ZSH的功能(zsh如果您是默认情况下不使用ZSH的可怜人之一,请在终端中输入):

autoload zmv
zmv '(*).htm' '$1.html'

ZMV遵循MMV语法


但这还允许正则表达式替换吗?这似乎只是某种增强的外壳globbing。
数学

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

我真的很喜欢这个建议,因为您不需要在Mac上安装任何额外的东西(例如brew),但是它确实允许您使用简单的mmv like语法。
干草,2013年

+1好。与我习惯使用的正则表达式有几个区别:1)使用*而不是.*全部获取。*?似乎工作起来很不贪心.*?。2)对我来说,^$开始和字符串的结尾似乎使其没有匹配
user56reinstatemonica8

21

笨拙的我:

for i in *.yourfiles; do mv "$i" "`echo $i | sed 's/old/new/g'`"; done 

如果您想像我一样经常使用它,请按照以下方式操作:

rename 's/old/new/' *.files

我建议在〜/ bin / rename中使用以下脚本:

#!/usr/bin/env zsh
SUBSEXPR=$1
shift
for i in $@; do mv $i `echo "$i" | sed $SUBSEXPR`; done

您的脚本对我不起作用“ rename ACDC AC-DC ACDC *” result->“ ssed:无法读取ACDC:没有这样的文件或目录”,我从linux安装了util重命名,现在可以正常使用
holms

5

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

namedutils @ 0.10.0(sysutils)

namedutils是一组程序,旨在使文件重命名更快,更省力


该软件包没有“重命名”命令。
juanpablo

1
我没有说是的。qmv看起来确实可以做到。
lajuette 2010年

qmv是一个很棒的工具,虽然对于简单的正则表达式重命名来说需要太多工作,但它对于智能命名和移动大量任意文件
非常有用

4

重命名有各种版本。看起来您正在寻找基于Perl的产品。

File :: Rename Perl模块附带了该实用程序的一个版本。您可以使用来安装它sudo cpan -i File::Rename

或者,您可以使用Debian的perl包中重命名。它只是一个下载文件。将其放在您喜欢的位置并对其进行chmod使其可执行。


另一种方法是zsh随附zmv工具。它没有相同的语法,但是它随操作系统一起提供,并且可以轻松处理许多常见情况。


perl的命名是什么这个问题,显示作为一个例子。
quack quixote 2010年

2

在Mac上,我使用Aristotle Pagaltzis的免费版本rename,就像Debian的基于Perl一样。你可以在这里得到。或访问这里先阅读它-总是一个好主意。

您需要将其放置在自己的某个位置$PATH并使其可执行(chmod +x rename),然后就可以使用了。


2

这应该不难,但显然很困难。例如,我想将所有文件的扩展名从aiff重命名为aifc。

find . -iname "*.aiff" -exec bash -c 'mv "$0" "${0%\.aiff}.aifc"' {} \;



0

如果您喜欢Sublime Text的多选功能,则可以将其与qmv结合使用:

qmv --editor =“ / usr / bin / s3 -w”文件


0

我只是继续前进,发现我最喜欢的我称为perl-rename的rename命令给出了如下帮助的命令:

Usage: rename [-v] [-n] [-f] perlexpr [filenames]

这就是我知道我得到喜欢的那种的原因。

对于Mac,即使在Homebrew中,他们也有其他地方,我只是隐约记得遇到了麻烦。因此,它不是rename软件包,也不是nongnu renameutils软件包。

从这里得到它,然后像他们提到的那样进行安装:https : //github.com/subogero/rename

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.