Я хотел бы переименовать все файлы от папки с помощью regex (добавьте имя в конец имени), и переместитесь в другую папку.
Это мое мнение, это должно быть похожим на это:
mv -v ./images/*.png ./test/*test.png
, но это не работает.
Кто-либо может предложить меня решение?
Я также как переименовать команда, что John T отправленный, но это не доступно во всех системах. Это должно работать везде:
for i in *.png; do mv -v $i `basename $i .png`.test.png; done
Существует удобный сценарий переименования файла жемчуга, который установлен с основным пакетом Perl в находящихся в Debian системах (включая Ubuntu). Это обычно называют rename
, но иногда называется prename
(Perl переименовывает). Используйте как это:
rename expr file1 file2 file3
Команда использует Perl для оценки expr
для каждого file
аргумент, и это переименовывает каждый файл к выводу expr
evalutation. Так, для простых regex замен как Ваш пример:
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), то замена не сделает, что-либо и их имена файлов не будут изменены.
Можно использовать rename
который принимает регулярные выражения или эти основные 3 синтаксиса аргумента:
rename .png .test.png *.png