Массовое переименование файлов в Bash с сохранением части имени файла

У меня большое количество .jpg-файл, который имеет посторонние данные перед идентификатором файла, который мне нужно удалить, чтобы лучше настроить свою файловую структуру для последующего проекта. Как я могу сделать пакетное переименование в командной строке или Bash (bash предпочтительнее)

пример:
A_file_name_f3xe3_1_60113520.в формате JPG - (60113520 являющийся ID)
стать:
60113520.jpg

все файлы имеют подчеркивания перед ID, но там случайно помещены дополнительные подчеркивает в другом месте имя.

5
задан Nema
источник

2 ответов

специально для этого есть команда :

rename -n 's/.*?(\d+.jpg$)//' *.jpg

это prename on debian и производный, и это perl исполняемый файл.

удалить -n включается в случае, если ваш тест соответствует вашим потребностям.

чтобы сделать его по умолчанию (все равно debian и деривационных :

 update-alternatives --set rename /usr/bin/prename
4
отвечен Gilles Quenot 2012-12-20 21:17:51
источник

использовать следующий:

for FILE in *.jpg ; do mv -v "$FILE" "${FILE//*_/}" ; done

это удаляет все в именах файлов JPG до и включая последний символ подчеркивания в имени файла. Это описано здесь в разделе Замена Подстроки:

${строка//подстрока/замена}

заменить все совпадения $substring С $replacement.

в вашем случае, replacement пусто.

1
отвечен Daniel Beck 2012-12-20 20:58:32
источник

Другие вопросы bash batch-rename command-line rename