Я использую rename
все время. Это довольно просто, но, надеюсь, вы знаете основные регулярные выражения:
rename "s/SEARCH/REPLACE/g" *
Это заменит строку SEARCH
с REPLACE
в каждом файле (то есть, *
). В /g
означает глобальный, так что если бы у вас был SEARCH_SEARCH.jpg
, он был бы переименован REPLACE_REPLACE.jpg
. Если бы у вас не было /g
, он сделал бы замену только один раз и, таким образом, теперь называется REPLACE_SEARCH.jpg
. Если вы хотите, чтобы регистр не учитывался, добавьте /i
(это было бы, /gi
или /ig
в конце).
С помощью регулярных выражений вы можете сделать гораздо больше.
Обратите внимание, что это rename
это prename
(он же Perl rename
) команда, которая поддерживает полные регулярные выражения Perl. Есть еще один rename
который использует шаблоны и не такой мощный. prename
раньше он устанавливался по умолчанию в Ubuntu (вместе с Perl), но теперь вам, возможно, придется сделать:
sudo apt install rename
Вот несколько примеров:
Префикс
Добавь:
rename 's/^/MyPrefix_/' *
-
document.pdf
переименован вMyPrefix_document.pdf
Удалять:
Также вы можете удалить ненужные строки. Допустим, у вас было 20 MP3-файлов с такими именами, как CD RIP 01 Song.mp3
и вы хотели удалить часть "CD RIP", и вы хотели удалить ее из всех них с помощью одной команды.
rename 's/^CD RIP //' *
-
CD RIP 01 Song.mp3
к01 Song.mp3
Обратите внимание на дополнительное пространство в '^CD RIP '
, без пробела все файлы будут иметь пробел в качестве первого символа файла. Также обратите внимание, что это будет работать без ^
характер, но соответствовал бы CD RIP
в любой части имени файла. То ^
гарантирует, что он удаляет символы только в том случае, если они являются началом файла.
Суффикс
Добавь:
rename 's/$/_MySuffix/' *
-
document.pdf
переименован вdocument.pdf_MySuffix
Изменить:
rename 's/\.pdf$/.doc/' *
изменится Something.pdf
в Something.doc
. (Причиной обратной косой черты является, .
является подстановочным знаком в регулярном выражении, поэтому .pdf
спички qPDF
в то время как \.pdf
соответствует только точной строке .pdf
. Также очень важно отметить, что если вы не знакомы с BASH, вы должны заключить обратную косую черту в ОДИНАРНЫЕ кавычки! Вы не можете опускать кавычки или использовать двойные кавычки, иначе bash попытается перевести их. Чтобы поколотить \.
и "\."
равняется .
. (Но используются двойные кавычки и обратная косая черта, например "\n" для новой строки, но поскольку "\."
не является допустимой обратной escape-последовательностью, она преобразуется в .
)
На самом деле, вы даже можете заключить части строки в кавычки вместо целого: 's/Search/Replace/g'
это то же самое, что и s/'Search'/'Replace'/g
и s/Search/Replace/g
чтобы ПОКОЛОТИТЬ. Вы просто должны быть осторожны со специальными символами (и пробелами).
Я предлагаю использовать -n
вариант, когда вы не уверены, что у вас есть правильные регулярные выражения. Он показывает, что будет переименовано, а затем завершает работу, не делая этого. Например:
rename -n s/'One'/'Two'/g *
Здесь будут перечислены все изменения, которые он внес бы, если бы вы не поместили -n
флаг там. Если это выглядит хорошо, нажмите Up чтобы вернуться назад, затем сотрите -n
и нажмите Enter (или замените его на -v
для вывода всех внесенных изменений).
Примечание: Версии Ubuntu выше 17.04 не поставляются с rename
однако по умолчанию он по-прежнему доступен в репозиториях. Воспользуйся sudo apt install rename
чтобы установить его