Найти и переименовать файлы, удалив суффикс

Я использую следующую команду для перемещения всех файлов (не рекурсивно), заканчивающихся на _128.jpg, в подкаталог 128x160. Это прекрасно работает.

find . -iname '*_128.jpg' | xargs -I '{}' mv {} 128x160

Но мне также нужно удалить суффикс _128 из каждого файла. Кроме того, я должен сохранить свой текущий метод xargs, так как выполнение exec для каждого из них сделает процесс чрезвычайно длинным.

Заранее спасибо за сотрудничество!

1 ответ

Решение

Нечто подобное должно сработать:

find . -iname '*_128.jpg' | xargs -I % sh -c 'newname=$(echo % | sed "s/_128//"); mv % 128x160/$newname'

Здесь я использовал подход с несколькими командами, используя sh -c 'command1; command2' а также sed очистить _128 в имени файла.

Другие вопросы по тегам