Когда по каналу с ls, grep в солярисе не работает

Я использую приведенную ниже команду в солярисе

ls -l | grep '*PROC*'

Но это не работает. У меня есть много файлов, которые содержат "PROC" в своем имени, например "XREF_PROC.complete", но когда я использую приведенную выше команду, она не показывает никакого вывода. Когда я использую ls *PROC* работает, но не работает с grep.

Спасибо

1 ответ

Решение

ТЛ; др

Вам не нужен квантификатор, просто grep для PROC:

ls | grep PROC

длинная версия

Звездочка у тебя ls линия, не совпадает с той, что в вашем grep линия.

Если в командной строке есть неэкранированная звездочка, оболочка развернет ее раньше ls видит это, это называется шататься. Одна звездочка распространяется на все файлы в текущем каталоге, например, попробуйте echo *, *PROC* glob расширится на все файлы, содержащие PROC.

Звездочка, которую вы используете с grep экранируется одинарными кавычками и, следовательно, будет интерпретироваться grep, Тем не мение, grep по умолчанию использует BRE (базовые регулярные выражения), где звездочка работает как квантификатор, поэтому для количественной оценки требуется какой-либо символ или класс символов, например '.*',

Другие вопросы по тегам