Переименуйте несколько файлов с помощью / usr / bin / rename, используя regex - PullRequest
2 голосов
/ 17 октября 2011

У меня есть много PDF-файлов, которые я хочу переименовать с помощью /usr/bin/rename.

Файлы названы по следующей схеме:

<rating> <a pretty long title> (<author> <year>).pdf
e.g.: +++ The discovery of some very interesting stuff (Dude 1999).pdf

rating: 1 to 5 '+' signs
year: numerical

Они должны быть переименованы в следующуюpattern:

<author>, <year> <rating> <a pretty long title>.pdf
e.g.: Dude, 1999 +++ The discovery of some very interesting stuff.pdf

Я пытался использовать /usr/bin/rename и написал эту команду:

rename  's/(.*)\ (.*)\ \((.*)\ (.*)\).pdf/$3, $4 $1 $2.pdf/' *.pdf

Однако команда не считает, что рейтинг всегда содержит знаки «+» и чтогод всегда числовойКак мне этого добиться?Я пробовал что-то вроде ([+]{1,5}) и ([0-9]{4}), но это не сработало.

Действительно ли rename способен интерпретировать что-то отличное от (.*) как входные данные для переменных $1 ... $n?

Спасибо за помощь!

Ответы [ 2 ]

4 голосов
/ 17 октября 2011

Это прекрасно работает для меня:

rename 's/(\+{1,5}) (.*) \((.*) ([0-9]{4})\).pdf/$3, $4 $1 $2.pdf/' -- \
    'Dude, 1999 +++ The discovery of some very interesting stuff.pdf'

... однако ваш вопрос не цитирует сообщение об ошибке, поэтому трудно сказать, что может быть не так в вашей ситуации.

В качестве предупреждения есть две разные версии /usr/bin/rename, которые широко распространены в системах Linux и имеют разные синтаксисы.Я предполагаю, что вы используете Perl, так как ваша оригинальная команда работала вообще.Это означает, что вы можете использовать любое выражение Perl для изменения имени - см. perlre для получения дополнительной информации.

0 голосов
/ 26 марта 2015

К сожалению, Fedora (это мой дистрибутив) имеет бесполезную версию переименования.

Но я изменил ее для perl-версии утилиты замены.

Вы можете найти ее в CPAN получить и распаковать архив, а затем:

# ./Build installdeps
# sudo ./Build install

!!!Это действие заменяет исходное переименование fedora: bin-файл и руководство, но его можно восстановить, переустановив yum, и можно восстановить при следующем обновлении fedora. Также вы можете установить его отдельно или использовать альтернативы.

...