なぜgrepは時々ファイル名を表示し、時々表示しないのですか?


8

例1でフルパスが取得できない理由を誰かに説明してもらえますか?

例1-見つかった行を返す

grep MODIFY /opt/releases/packages/cr_c_cr6/sas/dbms/*/*;
outcome: MODIFY

例2-フルパスを返す

grep MODIFY /opt/releases/packages/cr666/sas/dbms/*/*;
/opt/releases/packages/cr666/sas/dbms/sti/FA_DISCLOSURE.ddl:MODIFY QUANTITY NUMBER;

解決策を見つけましたが、ここで何が起こっているのかを理解したいと思います。1つのコマンド、異なる結果/処理。


1
すでに使用するオプションが見つかりました:-H -Hは、複数のファイルをgrepするときのデフォルトです。1つのファイルのagrepの場合(例1の場合)、-Hはありません。
Marco、

回答:


13

最初の例では、グロブは単一のファイルに展開されている必要があります。その場合、grep(デフォルトでは)ファイル名を付加しません。

2番目の例は、いくつかのファイル名に展開されている必要がありgrep、その場合はファイル名の前に付加されます。

この-Hオプションを使用して、出力の前に常にファイル名を付加-hすることも、決して取得しないこともできます。

grepにこれらのオプションがない場合は、を使用grep REGEX /path/to/pattern/* /dev/nullして常にファイル名を取得する(ヒットすることはないが/dev/null、ファイル名としてカウントされる)か、ファイル名をcat /path/to/pattern/* | grep REGEX取得しない。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.