음수 조건의 find 명령은 여전히 ​​주어진 디렉토리를 고려합니다.

음수 조건의 find 명령은 여전히 ​​주어진 디렉토리를 고려합니다.

/home 디렉터리(직접 또는 모든 수준의 하위 디렉터리 중 하나)에 있는 파일 이외의 파일을 찾으려면 다음 명령을 실행합니다.

find / ! -path '/home/*'

그러나 다음과 같은 "권한 거부" 메시지와 함께 오류가 발생합니다.

find: '/home/user/here/is/some/file': Permission denied

그 자체로 "권한 거부"라는 것은 상관하지 않습니다. 내가 싫어하는 점은 심지어 거기에서 검색을 시도한다는 것입니다.

처음에는 /home/user/ 내의 디렉터리를 참조하는 FS의 다른 곳에 일부 심볼릭 링크가 있기 때문일 수 있다고 생각했지만 다음과 같이 -H 옵션을 사용해 보았습니다.

find -H / ! -path '/home/*'

여전히 /home/*에 해당 파일/디렉토리가 나열됩니다.

이 문제를 해결하는 방법에 대한 아이디어가 있습니까?

답변1

-path이 구성 요소는 가능한 모든 경로에 대해 평가됩니다. 검색 시간이 단축되지는 않습니다. -prune이렇게 해야 합니다.

find / -path '/home/*' -prune -o -print

관련 정보