Как выбрать только числа из имен файлов в 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' 
  • Преобразование многострочных линий в одну строку
  • Переименование файлов в сценарии bash
  • Как вывести выход из кошки
  • Как читать пользовательский ввод строки за строкой до Ctrl + D и включать строку, в которой набирается Ctrl + D
  • Доступ к элементу случайного массива в ZSH
  • process Count каждого пользователя в команде ps aux
  • Вопрос AIX по команде cp
  • Как перенаправить вывод в журнал из команды wait
  • Как передать аргумент с пробелами функции сценария оболочки?
  • Передача переменной из одного сценария в другой
  • Убивание предыдущих экземпляров скрипта перед запуском того же сценария Unix
  • Interesting Posts

    FreeBSD: открытие приложений X после su для root?

    stderr очищается до начала stdout, при использовании файлового регистратора

    Почему resolv.conf очищается каждый раз, когда я подключаюсь из Интернета в Debian?

    поместить специальный символ или пробел, если шаблон не найден

    Инструмент для уменьшения размера раздела и создания нового из командной строки

    Создание интерактивной оболочки для команды

    как начать работу с сервером окон x из linux mint?

    Границы меню отсутствуют, когда firefox с сайта firefox используется на kde

    Разница трубопроводов grep -c с различным регулярным выражением до bc

    Почему пакет debian jessie от MongoDB не устанавливает сценарий init.d?

    Невозможно подключиться к некоторым WiFis, Linux на Macbook Pro

    Как настроить wpa_supplicant.conf для кнопки WPS?

    Как настроить Unison для реального peer-to-peer?

    установить IP-адрес виртуальной машины каждый раз, начиная с DHCP на CentOS 5.6

    inotifywait различные действия по файлу или директории

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