この2つのコマンドの違いは何ですか..
find . –name *.txt
find . –name "*.txt"
システムで実行しましたが、違いが見つかりません。サインは何をし" "
ますか?
glob パターンの前後に引用符を使用しない場合、つまり次のように言う場合:
find . -name *.txt
次に、シェルは現在のディレクトリ*.txt
内の一致するファイルに展開してから、それらを引数としてに渡します。パターンに一致するファイルが見つからない場合、動作は引用されたバリアントに似ています。find
引用符を使用する場合、つまり次のように言う場合:
find . -name "*.txt"
シェルは*.txt
引数として に渡しますfind
。
グロブを指定するときは常に引用符を使用します(特に への引数として使用する場合find
)。
例が役立つ場合があります。
$ touch {1..5}.txt # Create a few .txt files
$ ls
1.txt 2.txt 3.txt 4.txt 5.txt
$ find . -name *.txt # find *.txt files
find: paths must precede expression: 2.txt
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
$ find . -name "*.txt" # find "*.txt" files
./2.txt
./4.txt
./3.txt
./5.txt
./1.txt