Как мне легко переименовать несколько файлов с помощью командной строки?

Я использую 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 чтобы установить его