どちらの場合も、インタラクティブな 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'