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

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

Пример: A_file_name_f3xe3_1_60113520.jpg - (60113520 - идентификатор) Чтобы стать: 60113520.jpg

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

2 ответа

Для этого особенно подходит команда:

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

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

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

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

 update-alternatives --set rename /usr/bin/prename

Используйте следующее:

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

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

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

Заменить все совпадения $substring с $replacement,

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

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