这是我的目录树(不显示所有目录、文件,只显示必需的):
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'