it-swarm-ja.com

lsでパイプすると、Solarisのgrepが機能しません

Solarisで以下のコマンドを使用しています

ls -l | grep '*PROC*'

しかし、それは機能していません。 「XREF_PROC.complete」のように名前に「PROC」が含まれているファイルがたくさんありますが、上記のコマンドを使用すると出力が表示されません。 ls *PROC*を使用すると、機能しますが、grepでは機能しません。

ありがとう

3
sandywho

tl; dr

数量詞は必要ありません。PROCのgrepだけです。

ls | grep PROC

長いバージョン

ls行のアスタリスクは、grep行のアスタリスクと同じではありません。

コマンドラインにエスケープされていないアスタリスクがある場合、シェルはlsがそれを認識する前にそれを展開します。これは、 globbing と呼ばれます。アスタリスクだけで、現在のディレクトリ内のすべてのファイルに展開されます。たとえば、echo **PROC* globは、PROCを含むすべてのファイルに展開されます。

grepisで使用しているアスタリスクは一重引用符で囲まれているため、grepによって解釈されます。ただし、grepはデフォルトで BRE (基本正規表現)を使用します。アスタリスクは数量詞として機能するため、数量化するには文字または文字クラスが必要です。 '.*'

10
Thor