간단한 찾기 명령이 작동하지 않습니다

간단한 찾기 명령이 작동하지 않습니다

저는 Linux를 처음 접했고 현재 다음 명령을 실행하려고 합니다.

find ~ -name apt.no

apt.no로 나열된 다른 디렉토리를 찾고 있습니다 montrose-files.

쉘은 응답하지 않고 단지 새로운 라인을 생성합니다. 왜 이것이 결과를 내지 못하는지 설명해줄 수 있는 사람이 있나요?

bbcharlieca@myvm:~$ find ~ -name apt.no
bbcharlieca@myvm:~$ █

여기에 이미지 설명을 입력하세요.

답변1

명령은 디렉터리와 그 아래 디렉터리에서 호출된 파일 이나 디렉터리를 찾습니다 . find ~ -name apt.no(자신의 홈 디렉토리를 나타냅니다.)apt.no$HOME~

자신의 홈 디렉터리에 있지 않으면 검색되지 않으며 montrose-files대상 파일을 찾을 수 없습니다. 예를 들어, montrose-files다른 경로 아래에 있는 경우 해당 경로를 지정해야 합니다.

find /path/to/montrose-files -name 'apt.no' -print

혼란스럽게도 이전에 홈 디렉토리에 심볼릭 링크를 생성한 경우 기본적으로 심볼릭 링크를 따르지 않기 montrose-files때문에 해당 심볼릭 링크도 검색되지 않습니다 . find다음 두 가지 방법 중 하나로 이 문제를 해결할 수 있습니다.

find ~ -follow -name 'apt.no' -print
find ~/montrose-files/ -name 'apt.no' -print

첫 번째 방법에서는 find심볼릭 follow링크를 알려줍니다. 이는 일부 버전에서는 find잘못된 접근 방식일 수 있습니다 . 왜냐하면 심볼릭 링크가 루프를 가리키는 경우 구조를 여러 번 반복하게 될 수 있기 때문입니다.

두 번째 접근 방식에서는 후행 슬래시를 추가하여 기호 링크가 실제 디렉터리 대상으로 확인되도록 강제합니다.

마지막으로, 모든 경우에 내가 찾고 있는 파일 이름을 인용하고 있다는 점에 유의하시기 바랍니다. 간단한 경우에는 아무런 차이가 없지만 파일 이름의 알 수 없는 부분(예: )과 일치시키기 위해 와일드카드를 사용하기 시작할 때 와일드카드를 얻기 apt.*전에 쉘에서 처리되지 않도록 작은따옴표를 사용해야 합니다. . find그들을). 주장을 인용하는 습관을 들이는 것이 좋습니다.


* 기술적으로는 모든 프로젝트와 일치하지만 홈 디렉터리에 파이프, 소켓 또는 장치 노드가 있을 가능성은 거의 없습니다.

관련 정보