Как выбрать только числа из имен файлов в bash с помощью regex

У меня есть папка с файлами шаблона: SNAFU12.jpg, SNAFU1.jpg, SNAFU123.jpg,

я попытался использовать этот код:

for f in *.jpg; do regex="/\d/g" file="f:5:6" if [[ $file =~ $regex ]]; then echo ${BASH_REMATCH[1]} fi done 

Мой ожидаемый результат должен быть:

 12 1 23 

Мой код не выводит! 😭

2 Solutions collect form web for “Как выбрать только числа из имен файлов в bash с помощью regex”

Ваш шаблон Regex не соответствует чему-либо, потому что он пытается сопоставить два / s, которые являются разделителями каталогов для * nix, и никакое имя файла не будет содержать это. Я предполагаю, что /.../g приходит из вашей JavaScript (или другой) практики Regex, нет?

Делать:

 for i in *.jpg; do [[ $i =~ ([0-9]+)\.jpg$ ]] && echo "${BASH_REMATCH[1]}"; done 

bash Regexp не поддерживает ключевое слово \d для класса символов [0-9] . Поэтому лучше использовать [0-9] , если вы хотите зависеть от своего locale , используйте класс символов [:digit:] :

 for i in *.jpg; do [[ $i =~ ([[:digit:]]+)\.jpg$ ]] && echo "${BASH_REMATCH[1]}"; done 

Пример:

 $ for i in *.jpg; do [[ $i =~ ([0-9]+)\.jpg$ ]] && echo "${BASH_REMATCH[1]}"; done 123 12 1 

Изменение вывода ls в папке, содержащей файлы:

 ls SNAFU* | sed -e 's/SNAFU\|.jpg//g' 
  • Добавить путь к $ PATH, если он еще не был в $ PATH
  • Как удалить. с начала строки Bash и записать результат в переменную?
  • Как проверить первый элемент в массиве
  • Определить переменные с именем переменной
  • Отображение сеанса экрана Bash для удаленного экрана для пользователя
  • Имеет ли `csh` эквивалент Bash` set -o nounset`?
  • сценарий оболочки, чтобы найти комбинацию элементов массива
  • Извлечение IP-адреса из текста и сохранение его в переменной
  • Bash: интерактивное дистанционное приглашение
  • Pgrep возвращает несколько PID
  • Как удалить слова, заканчивающиеся буквой S, если дубликаты без S на конце находятся в одном списке?
  • Interesting Posts

    Предотвращение распространения SIGINT для родительского процесса

    Конфликтные ответы относительно пакета с rpm, yum и repoquery

    перенос конфигурации ядра в другую архитектуру

    Как сделать `–index` с` git stash pop` по умолчанию?

    Как создать плагины dnscrypt?

    Как подготовить безголовую машину?

    Как назначить избыточные ярлыки для переключения рабочих пространств в GNOME 3?

    Work-Around для хранения значений массива в переменной среды, а затем вызов из сценария Bash

    У Bash проблемы с производительностью при использовании списков аргументов?

    добавление пустой первой строки внутри файла csv

    Сравните идентификационные номера с номерами ревизий в двух файлах, и если rev # для файла A меньше, чем файл B, замените строку на новый rev #?

    Могу ли я установить дистрибутив, загруженный с диска на тот же диск?

    CentOS: нужно разрешить порт 8080 в iptables

    awk для извлечения аргумента опции

    Есть ли способ установить две папки в одну точку монтирования, чтобы зеркалировать папки?

    Linux и Unix - лучшая ОС в мире.