Массовое переименование файлов в 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
пустой.