if ($answer_counter == 1): ?>
endif; ?>
Я использую 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
to 01 Song.mp3
Обратите внимание на дополнительное пространство в '^CD RIP '
, без пробела все файлы будут иметь пробел в качестве первого символа файла. Также обратите внимание: это будет работать без символа ^
, но будет соответствовать CD RIP
в любой части имени файла. ^
гарантирует, что он удаляет только символы, если они являются началом файла. Р>
Суффикс
Добавить
rename 's/$/_MySuffix/' *
-
document.pdf
переименовано в document.pdf_MySuffix
Изменить
rename 's/\.pdf$/.doc/' *
изменит Something.pdf
на Something.doc
. (Причина обратной косой черты: .
является подстановочным символом в regexp, поэтому .pdf
соответствует qPDF
, тогда как \.pdf
соответствует только точной строке .pdf
. Также очень важно отметить, если вы не знакомы с BASH, вы должны поместить обратную косую черту в SINGLE-цитаты! Вы не можете пропустить кавычки или использовать двойные кавычки, или 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
. Если он выглядит хорошо, нажмите Вверх , чтобы вернуться назад, затем сотрите -n
и нажмите Enter (или замените его на -v
, чтобы вывести все его изменения).