为什么“find”有时能找到我的文件,有时却找不到

为什么“find”有时能找到我的文件,有时却找不到

这是我的目录树(不显示所有目录、文件,只显示必需的):

a_root_dir/ (directory)
a_root_dir/dynamo/local/run.sh
a_root_dir/dynamo/local/run_local.sh

现在当我这样做时

> cd a_root_dir
> find . -name *.sh
./dynamo/local/run.sh
########### IT DOESN'T SHOW run_local.sh !!!!
> cd dynamo
> pwd
...../a_root_dir/dynamo
> find . -name *.sh
./local/run.sh
./local/run_local.sh
######## NOW IT FOUND IT

怎么会出现这样的情况呢?

文件、目录和脚本是“通常的”,没有符号链接。非常感谢

答案1

find问题是您的星号在作为参数传递之前由 shell 解释。

script.sh即,如果您在执行 find 的当前工作目录中有一个类似的文件,您的命令将如下所示like

#command you type:
find . -name *.sh
#command the shell creates:
find . -name script.sh

因此,在您的情况下,它是shell 解释的第一个匹配项,您的命令字面上是这样*.sh的:a_root_dir

find . -name run.sh

您需要做的是使用硬引号来抑制 shell 在find执行之前扩展星号:

find . -name '*.sh'

相关内容