find exec ls가 파일 중 하나 표시를 중지하는 이유는 무엇입니까?

find exec ls가 파일 중 하나 표시를 중지하는 이유는 무엇입니까?

여러 파일의 .sh 및 .sh.bak를 보여주는 find + ls가 있습니다.

그런 식으로 3개의 파일이 있을 것이라고 생각하여 그 중 하나를 복사했지만
ls는 그 중 하나인 .sh.bak를 표시하지 않았습니다.

기록에서 find + ls를 반복한 후 복사본을 비교합니다.

파일 2개 보기:

[root@localhost jeos]# find / -name del-non-*-locales.sh* -execdir ls -lh {} \;  
-rwxr-xr-x. 1 root root 4.4K Dec 17  2016 /root/proj/vm/locale/backups/del-non-eng-locales.sh.bak  
-rwxr-xr-x. 1 root root 4.4K Dec 17  2016 /root/proj/host.setup/manual/del-non-english-locales.sh  

1개 복사

[root@localhost jeos]# cp ~/proj/host.setup/manual/del-non-english-locales.sh .

위쪽 화살표 + Enter...이제 파일이 3개 보일 줄 알았는데

[root@localhost jeos]# find / -name del-non-*-locales.sh* -execdir ls -lh {} \;  
-rwxr-xr-x. 1 root root 4.4K Dec 17  2016 /root/proj/host.setup/manual/del-non-english-locales.sh  
-rwxr-xr-x. 1 root root 4.4K Nov  9 11:05 /root/proj/jeos/del-non-english-locales.sh

find + ls는 아무것도 변경하지 않았으며 여기에 파일이 표시되어 종료되었습니다.

[root@localhost jeos]# ls -lh /root/proj/vm/locale/backups/del-non-eng-locales.sh.bak  
-rwxr-xr-x. 1 root root 4.4K Dec 17  2016 /root/proj/vm/locale/backups/del-non-eng-locales.sh.bak

답변1

견적이 필요합니다 del-non-*-locales.sh*.

첫 번째 실행은 현재 디렉터리에 일치하는 파일이 없기 때문에 작동하므로 del-non-*-locales.sh*패턴은 기본적으로 자체적으로(별표 및 모두 포함) 확장됩니다.

~/proj/host.setup/manual/del-non-english-locales.sh현재 디렉토리에 복사한 후 del-non-*-locales.sh*로 확장되므로 del-non-english-locales.sh실제로는 대신 정확한 이름을 검색하게 됩니다 del-non-*-locales.sh*. 그렇기 때문에 del-non-eng-locales.sh.bak더 이상 일치하지 않습니다.

관련 정보