どちらの場合も、インタラクティブな bash は を./*.md
呼び出す前に展開されますfind
。したがって、最初のコマンドは次のように展開されます。
find ./one.md ./two.md ./three.md ./four.md
2 番目のケースでは、コマンドは次のように展開されます。
./findall.sh ./one.md ./two.md ./three.md ./four.md
次に、スクリプトが実行され、スクリプト内のコマンドが次のように展開されます。
find ./one.md
おそらく、ワイルドカードを引用するつもりでした:
find './*.md'
./findall.sh './*.md'
ただし、どちらの場合でも、find
への最初の引数find
( で始まる引数の前-
) が検索対象のディレクトリの名前であるため、 は失敗します。という名前のディレクトリはありません。ファイル名またはディレクトリ名には使用できない./*.md
ためです。/
*.md
おそらく、現在のディレクトリの下の任意の場所で、名前が一致するすべてのファイルを見つけるために、これを意味していたのでしょう。
find . -name '*.md'
おそらく、名前が一致する現在のディレクトリ(サブディレクトリではない)内のすべてのファイルを見つけるために、これを意味していました*.md
:
find . -maxdepth 1 -name '*.md'