Я сейчас пишу bash-скрипт для переименования файлов.Каждый файл выглядит так: * _ #. Ext , где * может быть чем угодно и # 9-значным числом.В этом примере вместо этого я использую 3 цифры.
Вот базовый пример того, что он должен делать:
Ввод: example1_123.jpg Вывод: example1.jpg
Достаточно просто?Справа:
#!/bin/bash
filename="example1_123.jpg"
echo ${filename/_[0-9][0-9][0-9]/}
Вывод: example1.jpg
Это работает ... до тех пор, пока ввод не похож на это имя файла: example2_123.jpg_987.jpg
Файл будет переименован в example2.jpg_987.jpg вместо example2_123.jpg.jpg
Я попытался использовать $ для конца строки, но это разбивает его, так как $ используется дляпеременные:
#!/bin/bash
filename="example2_123.jpg_987.jpg"
echo ${filename/_[0-9][0-9][0-9].jpg$/}.${filename/*./}
Вывод: example2_123.jpg_987.jpg.jpg \ $ также не работает.Я ничего не понимаю ...
Может кто-нибудь помочь мне заставить его работать так, как мне нужно?
PS [0-9] {3} вместо [0-9] [0-9] [0-9] также ломает его.Если кто-то знает, как его сократить, скажите, пожалуйста:)