Назад | Перейти на главную страницу

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

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

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

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

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

Что-то вроде этого должно помочь:

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

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