Существует удобный сценарий переименования файлов perl, который устанавливается вместе с основным пакетом Perl в системах на основе Debian (включая Ubuntu). Обычно его называют rename
, но иногда называют prename
(Perl переименовывать). Используйте как это:
rename expr file1 file2 file3
Команда использует Perl для оценки expr
для каждого аргумента file
, и она переименовывает каждый файл в выходные данные оценки expr
. Итак, для простых замен регулярных выражений, как ваш пример:
rename 's(images/(.*)\.png$)(test/$1.test.png)' ./images/*
# here's the expression:
# s()() -- just like s/// (but i don't need to escape the / in the filename)
# match regex: images/(.*)\.png$ -- match filenames of the form images/*.png
# replace: test/$1.test.png -- turn them into test/*.test.png
Если файлы не соответствуют выражению (например, файлы не в формате PNG), подстановка ничего не изменит и их имена не будут изменены.