Я использую 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для установки