find를 사용하여 NFS 디렉토리를 제외하는 방법은 무엇입니까?

find를 사용하여 NFS 디렉토리를 제외하는 방법은 무엇입니까?

사용자나 그룹 없이 파일을 검색해야 합니다.

find / -nouser -o -nogroup

나는 이것이 괜찮다고 생각한다. 그러나 NFS 공유를 검색하고 싶지 않습니다. find 명령에서 NFS 공유를 제외하는 방법은 무엇입니까?

답변1

당신이 얻을 가능성이 가장 가까운 것은 -xdev"다른 파일 시스템에 디렉토리를 삭제하지 마십시오"를 의미하는 use 입니다. 그런 다음 사용하는 파일 시스템을 지정해야 합니다.하다검색하고 싶습니다.

답변2

GNU find를 사용하면 조건자를 사용할 수 있습니다 -fstype.

find / -fstype nfs -prune -o \( -nouser -o -nogroup \) -print

그렇다면 hymie의 접근 방식이 더 의미가 있을 것입니다. 즉, 검색하고 싶지 않은 FS를 블랙리스트에 추가하는 대신 검색하려는 FS를 화이트리스트에 추가하는 것입니다.

jfs2파일 시스템 만 포함하려면 ( /에 있다고 가정 jfs2) 다음과 같이 작성해야 합니다.

find / ! -fstype jfs2 -prune -o \( -nouser -o -nogroup \) -print

다음과 같이 쓰지 마세요:

find / -fstype jfs2 \( -nouser -o -nogroup \) -print

이는 jfs2가 아닌 파일 시스템의 파일이 인쇄되는 것을 방지하지만 findjfs2가 아닌 파일 시스템을 크롤링하는 것을 막지는 않습니다(필요합니다 -prune).

알아채다 -a(그리고-o생략된 경우 암시)가 ( 보다 우선합니다 .또는)이므로 괄호가 필요한지주의를 기울여야합니다.

~ 위에옳은명령 약어는 다음과 같습니다.

find / \( \( ! -fstype jfs2 \) -a -prune \) -o \
  \( \( -nouser -o -nogroup \) -a -print \)

답변3

사용하기 가장 쉬운-아니요

 find / -not -fstype nfs -nouser -o -nogroup

속성

답변4

특정 찾기 옵션을 시도했지만 문제가 발생하여 다음 방법으로 전환했습니다.

find $(mount | awk '!/:/ {printf "%s ", $3}') -xdev

NFS가 마운트되지 않은 모든 파일 시스템을 검색해야 합니다.

관련 정보