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

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

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

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

9
задан Nema
11.04.2023 1:31 Количество просмотров материала 3180
Распечатать страницу

2 ответа

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

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

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

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

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

 update-alternatives --set rename /usr/bin/prename
4
отвечен Gilles Quenot 2023-04-12 09:19

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

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

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

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

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

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

1
отвечен Daniel Beck 2023-04-12 11:36

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх