2015-07-24 1 views
0

Я использую следующую команду в солярисепри конвейере с Ls, команда Grep не работает в солярисе

ls -l | grep '*PROC*' 

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

Thanks

ответ

3

То, что вы написали «получить все строки, содержащие * характер, то содержащие PRO строку и ноль или более C буквы. Попробуйте

ls -l | grep PROC 
+0

Спасибо за помощь. Я использую unix-серверы REDHAT, и когда я делаю 'ls -l | grep * PROC * 'работает отлично. Но не в солярии. Так что это уникальный случай в соляризе или мне не хватает somethinh – sandywho

+1

Нет, 'greo * PROC *' никогда не будет работать. Это потому, что '*' будет расширяться как выражение glob вашей оболочкой. – hek2mgl

+0

@ hek2mgl Существует случай, когда 'grep * PROC *' будет работать. – jlliagre

1

Никогда не труба выходы ls в grep. Используйте find вместо:

find -maxdepth 1 -name '*POC*' 

Однако, только для объяснения. Основная проблема с вышеприведенным оператором - это регулярное выражение, вместо этого оно должно быть grep 'PROC'.

+0

@sandywho - вы могли бы использовать 'Ls -ltr * PROC *' список файлов, которые содержат PROC в именах файлов. Поведение «*» будет отличаться от grep. – sras

3

Вы работаете различные команды в Linux и Solaris.

Следующие действия не будут выполняться, как указано nsilent22, независимо от ОС:

ls -l | grep '*PROC*' 

Это сработало бы в маловероятном случае, когда файлы имеют знак * в их имени, предшествующий PRO.

Следующая один будет работать (вроде), если *PROC* расширяется только один раз, то есть, если есть только один файл с PROC от своего имени:

ls -l | grep *PROC* 

Это также может объяснить разницу в поведении вы могли бы наблюдали между Solaris и Linux, но на самом деле не связаны с ОС. Вы говорите, что в Solaris есть много файлов с PROC, но в Linux может быть только один.

В любом случае использование grep здесь в основном бесполезно, за исключением особого случая, существует слишком много файлов, соответствующих *PROC* в каталоге, чтобы их имена соответствовали окружающей среде. В противном случае, вы бы ожидаемый результат этой простой командой:

ls -l *PROC* 
+0

Хорошая добыча! * Но на самом деле не имеет отношения к ОС * - вы правы! – hek2mgl

Смежные вопросы