Как я могу переименовать изображения с помощью команды "переименовать" из «нечто_full.jpg» в «что-то_500.jpg» рекурсивный?
2 ответа
По сути, вы можете использовать инструмент 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//' ).
Вы можете посмотреть в 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 чрезвычайно мощные. Вот хороший учебник по концепции.
