이것은 내 디렉터리 트리입니다(모든 디렉터리와 파일이 표시되지 않고 필요한 디렉터리와 파일만 표시됨).
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'