저는 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
. 그들을). 주장을 인용하는 습관을 들이는 것이 좋습니다.
* 기술적으로는 모든 항목과 일치하지만 홈 디렉터리에 파이프, 소켓 또는 장치 노드가 있을 가능성은 없습니다.