find と grep パイプは何も返しません。

find と grep パイプは何も返しません。

lect1.txtlect2.docおよびというファイルがありますlect3.doc

.txt私はファイルであり、ファイル名を含むファイルを取得したいと思いますlect

頑張った

find *.txt | grep lect*

何も返しません。

しかし、私がするとき

find *.txt | grep "lect*"

帰ってきたlect1.txt

これら2つの表現の違いは何ですか?

ベストアンサー1

grep最初の引数(パターン)に対してコマンドラインに渡されたファイルの検索または stdinファイルが通過しない場合。

引用符がない場合、シェルはlect*次のディレクトリに展開されますlect

grep lect1.txt lect2.doc lect3.doc

意味はlect1.txt.doc両方のファイルからテキストを検索する。ファイルのいずれかに対応するフレーズが含まれていない場合は.doc何も返されません。より正確には、()の後に続くすべての文字をlect1.txt見つけるので、なども探します。)lect1.txtlect1-txtlect1xtxt

"lect.*"2番目の例では、シェルが拡張せずにそのまま渡されるように引用符を入れますgrep。パターンを引数として渡すだけで、渡されたgrepファイル名stdinからパターンを検索できます。 。

おすすめ記事