web-dev-qa-db-ja.com

ワイルドカードを使用する場合、「find」ユーティリティはすべてのファイルを出力しません

ランニング:

$find . -name *.exe

与える:

./MakeItSo_1.2.2/MakeItSo_1.2.2/MakeItSo.exe
./MakeItSo.exe

ただし、ディレクトリ内のexeファイルはこれらだけではありません。たとえば、実行中

$find . -name ATLTester.exe

与える:

./Debug/ATLDmoVexaTester.exe
3
dafnahaktana

シェルのせいです グロブ 。試してみてください:

find . -name "*.exe"

引用符で囲まれていない場合、*.exeは、現在のディレクトリにあるすべての*.exeファイルに展開されます(ファイルがない場合を除く)。そのようなファイルが1つしかないので、元のコマンドは実際には次のようになっています。

find . -name MakeItSo.exe

現在のディレクトリに*.exeファイルがない場合、シェルグロブは発生せず、findは文字通り*.exe引数を取得し、コマンドは期待どおりに機能します。一方、この拡張子を持つファイルが複数ある場合は、それらすべてがfindの引数として指定され、構文エラーが発生します。

7