findコマンドとワイルドカードを使用した内部拡張

findコマンドとワイルドカードを使用した内部拡張

私はまだコマンドラインを学んでいるので、findコマンドのワイルドカードの使用を完全に理解するのに苦労しています。

私はuser / tempディレクトリで作業しており、次のfindコマンドを使用してすべての.txtファイルを見つけます。

find . -name *.txt -print

これによりエラーが発生します。

find: unknown primary or operator.

拡張を避け、目的の結果を得るには一重引用符を使用する必要があることを知っていますが、*.txtなぜこれを行うのか理解できません。

*内部的に拡張するには脱出する必要があると読みましたfind。一重引用符を使用すると、*コマンドラインで特殊文字として解釈されないと思ったので混乱しています。しかし、拡張はどのように起こりますか?

ベストアンサー1

これには拡張を試みる2つの部分があります*。つまり、シェルが呼び出されたとき、findまたはfind引数が処理/使用されるときです。

一重引用符を使用しないと、シェルはそれを拡張するため、現在のディレクトリにa.txtとb.txtがある場合、コマンドラインは次から始まります。

find . -name *.txt -print

到着

find . -name a.txt b.txt -print

find有効なコマンドではありません。

一重引用符で囲むと、シェルはそれを無視するように指示するため、シェルはその文字列を引数としてfind取り、潜在的な名前を一致させるために使用します。*.txt-name

おすすめ記事