7

Как я могу переименовать изображения с помощью команды "переименовать" из «нечто_full.jpg» в «что-то_500.jpg» рекурсивный?

2 ответа2

6

По сути, вы можете использовать инструмент rename для этого. Он должен быть в версии для Perl с дистрибутивами Linux на основе Debian, но вы также можете легко загрузить его из исходного кода (очевидно, вы должны сначала сделать его исполняемым с помощью chmod +x).


Следующая команда заменит _full части с _500 на все файлы JPG в текущем каталоге.

rename 's/_full/_500/' *.jpg

Чтобы сделать это рекурсивно, начиная с текущего каталога, используйте rename с помощью find .

find . -type f -iname "*.jpg" -exec rename 's/_full/_500/' {} \;

Примечание. Возможно, вы захотите проверить команду перед ее выполнением. Чтобы сделать это, добавьте опцию -n для rename (например, между rename и строкой 's//' ).

1

Вы можете посмотреть в ZMV. zmv - это особенность zsh, для которой требуется, чтобы autoload -U zmv находилась где-то в вашем файле .zshrc .

РЕДАКТИРОВАТЬ: В качестве примера, задача, поставленная ОП может быть решена с

noglob zmv '(*)_full.(*)' '$1_500.$2'

Выдержка из справочной страницы zshcontrib :

zmv [ -finqQsvwW ] [ -C | -L | -M | -p program ] [ -o optstring ] srcpat dest

Переместите (обычно, переименуйте) файлы, соответствующие шаблону srcpat, в соответствующие файлы с именами в форме, заданной dest, где srcpat содержит круглые скобки, окружающие шаблоны, которые в свою очередь будут заменены $ 1, $ 2, ... в dest. Например,

zmv '(*).lis' '$1.txt'

переименовывает foo.lis в foo.txt , my.old.stuff.lis в my.old.stuff.txt и так далее.

Шаблон всегда обрабатывается как шаблон EXTENDED_GLOB. Любой файл, имя которого не изменено подстановкой, просто игнорируется. Любая ошибка (подстановка приводила к пустой строке, две подстановки давали один и тот же результат, назначение было существующим обычным файлом, а -f не указывалось) приводит к прерыванию всей функции без каких-либо действий.

Шаблоны EXTENDED_GLOB чрезвычайно мощные. Вот хороший учебник по концепции.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .