4

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

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

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

2 ответа2

4

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

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

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

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

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

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

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

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

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .