Перейменування багатьох файлів у 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

Повернення не відображаються у вашому коментарі - ви, ймовірно, повинні додати це як відповідь або відредагувати своє запитання, щоб включити ваше рішення.
Пол Р

1
Найкращим швидким рішенням, яке я коли-небудь знайшов, було використання вбудованого Автоматизатора. Ознайомтеся з цією статтею, щоб отримати покрокову допомогу: tuaw.com/2008/11/11/…
nilay

Я б проголосував за відповідь nilay, якби не коментар ...
voidstate

Відповіді:


49

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

brew install rename 

Тоді ви можете запускати ті самі renameкоманди, що і в Linux.


3
Ви також можете використовувати пакет MacPorts: встановіть порт p5-перейменування файлу
Miquel Adrover

2
@MiquelAdrover: Але з портом потрібно використовувати rename-5.22(де 22 встановлена ​​версія) замістьrename
пам’яті

Ви можете перейменувати символічне посиланняsudo mv /opt/local/bin/rename-XXX /opt/local/bin/rename
Ako

26

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

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

ZMV слід за синтаксисом MMV .


але чи це також дозволяє замінити регулярні вирази? Це, здається, лише якась вдосконалена обшивка оболонки.
математика

4
@brubelsabs: Так, zmv може зробити заміну regexp . Для файлів, які відповідають *user*.html, змініть розширення на .htmlта змініть всі входи rcна final: zmv '(*user*).htm' '${1//rc/final}.html'@ghoppe: Я думаю, що приклад zmv у ваших відповідях потребує -wчи круглі дужки навколо його підстановки.
Кріс Джонсен

Мені дуже подобається ця пропозиція, оскільки вам не потрібно встановлювати нічого додаткового на Mac (наприклад, пивоваріння), але це дозволяє вам використовувати простий синтаксис mmv, як.
Сіно

+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

ваш скрипт не працює для мене «Не перейменовувати ACDC ACDC ACDC *» result-> «ssed: не може прочитати ACDC: Немає такого файлу або каталогу», я встановив перейменовувати Util з Linux і тепер він працює anwyay
Holms

5

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

renameutils @ 0.10.0 (sysutils)

renameutils - це набір програм, призначених зробити перейменування файлів швидшими та менш громіздкими


у цьому пакеті немає команди «перейменувати».
juanpablo

1
я не сказав, що це так. qmvсхоже, це робить свою роботу.
lajuette

qmvце чудовий інструмент, хоча трохи надто багато роботи для простих перейменовань регексу, він фантастичний для розумного називання та переміщення великої кількості довільних файлів
sapht

4

Існують різні версії перейменування . Схоже, ви шукаєте Perl на базі Perl.

Одна версія цієї утиліти постачається з модулем File :: Перейменувати Perl. Ви можете встановити щось подібне sudo cpan -i File::Rename.

Або ви можете перейти з перейменуванням з пакету Perl Debian . Це просто один файл для завантаження. Помістіть його куди завгодно і chmod, щоб він був виконаним.


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


Perl перейменування є те , що це питання показує , як приклад.
хитаючий кіхот

2

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

Вам потрібно розмістити це десь у своєму $PATHі зробити його виконуваним ( chmod +x rename), і тоді вам добре піти.


2

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

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

1

Якщо ви шукаєте графічний інтерфейс, спробуйте ім’я Mangler . У ньому є функція "попереднього перегляду", яка показує, що станеться, якщо ви будете виконувати перейменування.



0

Якщо вам подобається багатоцільовий вибір Sublime Text, ви можете використовувати його з qmv:

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


0

Я просто пішов вперед і знайшов свого улюбленого, якого я бачив, іменуваного perl-перейменувати, даючи renameкоманду, де довідка виглядає так:

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

Ось так я знаю, що отримав той, який мені подобається.

Для Mac навіть у Homebrew у них є інші, де я просто невиразно пам’ятаю проблеми. Отже, це не renameпакет, і це не renameutilsпакет nongnu .

Отримав це звідси і щойно зробив встановлення, як вони згадують: https://github.com/subogero/rename

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.