因此,我试图了解 Bash 中两个结果之间的区别,以进一步了解位置参数:
$ find ./*.md
one.md
two.md
three.md
four.md
和:
$ ./findall.sh ./*.md
one.md
哪里findall.sh
是:
#!/usr/bin/env bash
find $1
在我的理解中,这两个应该操作应该是相同的,但是使用位置参数似乎只返回一项。我没有得到什么?
因此,我试图了解 Bash 中两个结果之间的区别,以进一步了解位置参数:
$ find ./*.md
one.md
two.md
three.md
four.md
和:
$ ./findall.sh ./*.md
one.md
哪里findall.sh
是:
#!/usr/bin/env bash
find $1
在我的理解中,这两个应该操作应该是相同的,但是使用位置参数似乎只返回一项。我没有得到什么?
在这两种情况下,您的交互式 bash./*.md
在调用find
. 因此,您的第一个命令扩展为:
find ./one.md ./two.md ./three.md ./four.md
在第二种情况下,您的命令扩展为:
./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'