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