Пытаться:
find . -type f -name '*.png' -execdir bash -c 'mv "$1" "$@2x.png"' Move {} \;
find .
Начнется поиск файла с текущим каталогом.
-type f
Это ограничивает поиск обычными файлами.
-name '*.png'
Это ограничивает поиск файлами, имена которых заканчиваются на
.png
.-execdir bash -c '...' Move {} \;
При этом команда запускается в одинарных кавычках с
$0
присвоениемMove
и$1
назначением имени найденного файла. В нашем случае команда в одинарных кавычках:mv "$1" "$@2x.png"
Это переименовывает файл в конец
@2x.png
. Конструкция$
удаляет.png
из конца имени файла. Таким образом,$@2x.png
заменяет.png
в конце имени файла на@2x.png
.
пример
Давайте начнем с каталогов с этими файлами:
$ find . . ./dirA ./dirA/fileA.png ./dirA/fileC.png ./dirA/fileB.png ./dirB ./dirB/fileE.png ./dirB/dirC ./dirB/dirC/fileF.png ./dirB/fileD.png
Теперь давайте запустим нашу команду:
$ find . -type f -name '*.png' -execdir bash -c 'mv "$1" "$@2x.png"' Move {} \;
После выполнения команды у нас есть следующие файлы:
$ find . . ./dirA ./dirA/fileC@2x.png ./dirA/fileA@2x.png ./dirA/fileB@2x.png ./dirB ./dirB/dirC ./dirB/dirC/fileF@2x.png ./dirB/fileD@2x.png ./dirB/fileE@2x.png