見つけ-nameファイルのワイルドカードは、二重引用符を使用する必要があります。

シェルのワイルドカードエラーが発生しやすいポイント
LS -l AB *
検索。-name「* ABC」

*ファイル*を含め、ここではシェルのワイルドカードがありますか?[]

まず、ファイルのワイルドカードと正規表現は別の意味。最大の違いは次のとおりです
。1.「*」は文字の前の正規表現は、何回でも繰り返すことを示し、それは任意の文字列では、「*。」の任意の文字列を表すワイルドカード*シェル
2.式が正です「」。任意の文字、ワイルドカードではありません他の意味は、ワイルドカードであるここで、「?」任意の文字を表し、

*それはワイルドカード引用符与えなければならない、あなたは「*」の解析シェルにしたくないそうだとすれば、それ自体が解決されるシェル二重引用符(使用後の単一引用符を、彼らは何に置き換えされていません)

シェルによって、この*は解決すべき* AB ls -lで、以下のディレクトリには、AB1、ABC AB2、このコマンドは、第1シェルのls -l AB1、ABC AB2に変換される場合。LS自体がワイルドカードの能力を解決しません。
LS -l「AB *」ファイル名がABではないがあるので、それは、何もありません*

見つける。-nameは、「ABC *」このパラメータは、そのまま検索を渡され、それ自体がワイルドカードを解決する能力を持っているし、カレントディレクトリ以下のディレクトリレベルABCので始まり、次のファイルになりますコマンドを見つけます。
。と同等の一切のファイルABCはコマンドは空のディレクトリを見つけるために渡されていること、で始めないようにすれば、シェルを解決します-name ABC *ワイルドカード、見つける:
。-nameを見つけることを
見つける: `-name 'と欠落引数を

現在ABCディレクトリの先頭の下流文書が複数いる場合、エラーは以下と等価になります
。-name ABC1 ABC2を探す
検索:MUSTのPRECEDE式をパス:検索パスで2番目の名前のABC2フロントは、指定されていません

現在のディレクトリがABCファイルの始まりに過ぎないならば、あなたは間違って行くが、と等価であることができません:
。ABC1は-name検索
以下のディレクトリ内のすべてのファイルの中で最もABC1最終的な検索をし、我々の意図は非常に異なります。

「/」ではない内側に、そのベース名を検索するには、-nameオプションを忘れないでください

グレップについて言及。Grepの[-option]ファイルパターン
ここでパターンが正規表現で、それ以外の場合は、解析されたシェルで、二重引用符で囲む必要があります。ファイルには、このファイルのgrepには、分析能力は、シェルによって解決されなければならない、ワイルドカードのファイルがある場合は、ワイルドカードファイルセクションは何の二重引用符である必要があります見てきました、ではない、パターンの一部ではありません。
grep -i「メイン。*ハロー」 .C
のメインとハロー文の両方含む現在のディレクトリ検索のすべてのCソースファイル
シェルは、現在のディレクトリ内のファイルのために有効な、弱いを解決する能力をファイル自身のワイルドカード。
効果的な多層ディレクトリであるために:
はgrep -R「こんにちは」/ホーム/ジジ
しかし、これはファイル名を指定し、[ファイル名のパターンを指定することはできません
検索/ホーム/ジジ-name「.C」を-print0 | grepをxargsの-0r -H 'こんにちは'
はgrepのrH --include = 'こんにちは' /ホーム/ジジ'* C'
----------------
免責事項:この記事はCSDNのブロガーhardcareer 「オリジナルの記事、CC 4.0 BY-SAの著作権契約に従うが、再現し、元のソースのリンクと、この文を添付してください。
オリジナルリンクします。https://blog.csdn.net/hardcareer/article/details/89024352

公開された15元の記事 ウォンの賞賛0 ビュー3031

おすすめ

転載: blog.csdn.net/xx_ay/article/details/104344698