Невозможно получить вывод с помощью регулярных выражений - PullRequest
0 голосов
/ 29 сентября 2018

Это может быть глупо, но я не могу получить требуемый вывод.

У меня есть файл с именем Abc_sfgf_kjwefgk.txt20180929_040845 в каталоге.

Я пытаюсьвывести список файлов с помощью команды: ls -l Abc_sfgf_kjwefgk.txt[0-9]{8}_[0-9]{4}

Но это дает мне ошибку: ls: cannot access 'Abc_sfgf_kjwefgk.txt[0-9]{8}_[0-9]{4}': No such file or directory

Хотя с помощью этой команды: ls -l Abc_sfgf_kjwefgk.txt[0-9]*?_[0-9]*?

Это дает мнеправильный результат.

В чем проблема с моей начальной командой?

Ответы [ 2 ]

0 голосов
/ 29 сентября 2018

Кажется, что все в порядке с вашей командой SECOND .Здесь вы правильно используете globbing .

Если вы хотите проанализировать ls, то вы должны использовать что-то вроде этого:

ls | grep -E 'Abc_sfgf_kjwefgk.txt[0-9]{8}_[0-9]{4}'
0 голосов
/ 29 сентября 2018

{8} является литеральной строкой.Поскольку у вас нет имен файлов, содержащих {, регулярное выражение glob [0-9] не расширяется.Ваша команда буквально ls -l 'Abc_sfgf_kjwefgk.txt[0-9]{8}_[0-9]{4}'.Поскольку нет файла Abc_sfgf_kjwefgk.txt[0-9]{8}_[0-9]{4}, вы получаете сообщение об ошибке от ls, что такого файла нет.

Возможно, вы хотели написать

ls -l Abc_sfgf_kjwefgk.txt[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]_[0-9][0-9][0-9][0-9]

или

find -maxdepth 1 -regextype egrep -regex '.*/Abc_sfgf_kjwefgk.txt[0-9]{8}_[0-9]{4}' \
     -exec ls -l {} \;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...