Я использую rename
все время. Это довольно просто, но, надеюсь, вы знаете основные регулярные выражения:
rename "s/SEARCH/REPLACE/g" *
Это заменит строку SEARCH
с REPLACE
в каждом файле (то есть *
). В /g
означает глобальный, так что если у вас была SEARCH_SEARCH.jpg
, она будет переименована REPLACE_REPLACE.jpg
. Если бы у вас не было /g
, он бы сделал замену только один раз, и теперь называется REPLACE_SEARCH.jpg
. Если вы хотите, чтобы регистр не учитывался, добавьте /i
(это будет /gi
или /ig
в конце).
С помощью регулярных выражений вы можете сделать намного больше.
Обратите внимание, что это rename
команда prename
(aka 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 попытается перевести их. Для bash \.
и "\."
равно .
. (Но используются двойные кавычки и обратные слеши, например, "\ n" для новой строки, но так "\."
как не является допустимой обратной escape-последовательностью, она переводится в .
)
На самом деле, вы можете даже заключить части строки в кавычки вместо целых: 's/Search/Replace/g'
то же самое, что s/'Search'/'Replace'/g
и s/Search/Replace/g
в BASH. Вы просто должны быть осторожны со специальными символами (и пробелами).
Я предлагаю использовать -n
опцию, когда вы не уверены, что у вас есть правильные регулярные выражения. Он показывает, что будет переименовано, а затем завершится, не делая этого. Например:
rename -n s/'One'/'Two'/g *
Это перечислит все изменения, которые он сделал бы, если бы вы не поставили -n
флаг там. Если все выглядит хорошо, нажмите, Upчтобы вернуться, затем сотрите -n
и нажмите Enter(или замените его, -v
чтобы вывести все сделанные изменения).
Примечание . Версии Ubuntu выше 17.04 не поставляются rename
по умолчанию, однако они все еще доступны в репозиториях. Используйте sudo apt install rename
для установки