Найти и переименовать файлы, удалив суффикс
Я использую следующую команду для перемещения всех файлов (не рекурсивно), заканчивающихся на _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
в имени файла.