"찾기"가 때때로 내 파일을 찾는데 때로는 [중복]되지 않는 이유는 무엇입니까?

"찾기"가 때때로 내 파일을 찾는데 때로는 [중복]되지 않는 이유는 무엇입니까?

이것은 내 디렉터리 트리입니다(모든 디렉터리와 파일이 표시되지 않고 필요한 디렉터리와 파일만 표시됨).

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문제는 별표가 인수로 전달되기 전에 쉘에 의해 해석된다는 것입니다.

script.sh즉, find를 실행한 현재 작업 디렉토리에 유사한 파일이 있는 경우 명령은 다음과 같습니다 like.

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

따라서 귀하의 경우 이는 셸에서 해석된 첫 번째 일치 항목이며 명령은 문자 그대로 다음과 같습니다 *.sh.a_root_dir

find . -name run.sh

당신이 해야 할 일은 find실행하기 전에 쉘이 별표를 확장하지 못하도록 큰 따옴표를 사용하는 것입니다.

find . -name '*.sh'

관련 정보