Существует удобный сценарий переименования файлов 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), подстановка ничего не изменит и их имена не будут изменены.