52

Я использовал для переименования файла в Linux с помощью команды переименования:

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

Есть ли что-то похожее в Mac OS X (Snow Leopard)?

10 ответов10

48

С Homebrew, менеджером пакетов для OS X:

brew install rename 

Затем вы можете запустить те же команды rename что и в Linux.

26

Используйте силу ZSH с умом (наберите zsh в терминале, если вы одна из тех бедных душ, которые не используют его по умолчанию):

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

ZMV следует синтаксису MMV.

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
4

Существуют различные версии переименования. Похоже, вы ищете основанный на Perl.

Одна версия этой утилиты поставляется с модулем Perl File::Rename . Вы можете установить его с помощью команды sudo cpan -i File::Rename .

Или вы можете использовать переименование из пакета perl Debian. Это всего лишь один файл для скачивания. Поместите его в любое удобное для вас место и выполните chmod, чтобы он был исполняемым.


Альтернативой является инструмент zmv , который поставляется с zsh. У него нет того же синтаксиса, но он поставляется с вашей ОС, и он может легко позаботиться о многих распространенных случаях.

3

Вы можете попробовать установить MacPorts и установить пакет renameutils :

renameutils @ 0.10.0 (sysutils)

renameutils - это набор программ, предназначенных для более быстрого и менее громоздкого переименования файлов.

2

На Mac я использую свободно доступное rename Аристотеля Пагальциса, которое, как и в Debian, основано на Perl. Вы можете получить это здесь. Или посетите здесь, чтобы сначала прочитать его - всегда хорошая идея.

Вам нужно поместить это где-то в ваш $PATH и сделать его исполняемым (chmod +x rename), и тогда вы готовы.

2

Это не должно быть сложно, но, очевидно, это так. Например, я хочу переименовать расширение всех файлов из aiff в aifc.

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

Если вы ищете графический интерфейс, попробуйте Name Mangler. Он имеет функцию "предварительного просмотра", которая показывает, что произойдет, если вы выполните переименование.

1

эквивалентная команда в Renamer (кросс-платформенный)

$ renamer --regex --find 'old_pattern' --replace 'new_pattern' *glob
0

Если вам нравится множественный выбор Sublime Text, вы можете использовать его с qmv:

qmv --editor = "/usr/bin/s3 -w" файлы

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .