Ответ 1
С помощью ответа Марка Сетчелла я смог решить это с помощью следующего однострочного:
for f in *.png; do NEW=${f%.png}@2x.png; mv ${f} "${NEW}"; done;
Изменить: flopr был прав, теперь нужно работать
Я хотел бы переименовать свои изображения с .png на @2x.png. Есть ли простой способ сделать это с терминалом?
С помощью ответа Марка Сетчелла я смог решить это с помощью следующего однострочного:
for f in *.png; do NEW=${f%.png}@2x.png; mv ${f} "${NEW}"; done;
Изменить: flopr был прав, теперь нужно работать
Позвольте мне добавить что-то к этому вкладу. Более общий, множественный формат (jpg, png,..) и имя "расширение бесплатно" (шаблон <name> @2x. <extension> ) одно выровненное решение будет следующим:
for file in *; do mv "$file" "${file%.*}@2x.${file##*.}"; done
Это работает как шарм. Надеюсь, что это поможет.
Это должно сделать это:
#!/bin/bash
ls *.png | while read f
do
BASE=${f%.png} # Strip ".png" off end
NEW=${BASE}@2x.png # Add in @2
echo mv "$f" "${NEW}" # Rename
done
Сохраните его в файле Add2x, затем введите:
chmod +x Add2x
./Add2x
Когда вы увидели, что он собирается сделать, удалите слово "эхо", чтобы он действительно это сделал.
A Рекурсивный один лайнер, который я использую:
find -L . -type f -name "*.png" -exec bash -c 'echo "$0" "${0%.*}@2x.png"' {} \;
-L для обработки символических ссылок... Тип f предназначен только для поиска файлов
Поменяйте 'echo' на 'mv', если вы довольны тем, что будет делать команда.
На самом деле, есть более простой способ, используя инструмент Perl rename
...
rename 's/(.+)\.png/$1\@2x.png/i' *.png
Это говорит... "Замените один или несколько символов, за которыми следует .png
теми же символами и @2x.png
. Сделайте это без учета регистра (i
) для всех файлов PNG."
Инструмент rename
легко устанавливается с помощью homebrew
с помощью brew install rename
.