find가 권한에 대해 불평하게 만드는 경로 제외

find가 권한에 대해 불평하게 만드는 경로 제외

디스크 볼륨에서 파일 목록을 생성해야 합니다. 일부 디렉터리(루트 아래의 모든 숨겨진 디렉터리)에는 이상한 권한이 있어 find에서 오류가 발생합니다.

이 모든 경로를 제외하려고 시도했지만 한 디렉토리에서 여전히 불평합니다.

find . -type f -not -path './.*/*'
find: ./.DocumentRevisions-V100: Permission denied

권한은 이렇습니다(OS에서 설정하는 것이므로 함부로 하면 안 된다고 생각합니다).

d--x--x--x root  wheel   .DocumentRevisions-V100

find불평을 피하기 위해 모든 숨겨진 디렉토리를 효과적으로 생략하도록 명령문을 어떻게 변경할 수 있습니까 ? ( 2>/dev/null다른 질문에 대해 알고 싶은 것처럼 그렇게 하고 싶지 않습니다 .)

답변1

-readableGNU find 또는 and 조건자를 지원하는 다른 찾기를 사용하십시오 -executable.

find . -type d ! \( -readable -executable \) -prune -o -type f -not -path './.*/*' -print

먼저, 탐색할 수 없는 디렉터리를 정리합니다. 해당 조건이 적용되지 않으면 다른 조건을 시도해 보세요.

이러한 옵션이 없으면 find파일 권한을 일치시킬 수 있습니다.

find . -type d ! -perm -u+rx -prune -o -type f ! -path './.*/*' -print

답변2

find 구문은 참으로 이상한 짐승입니다. 내 생각엔 네가 성공할 수도 있을 것 같아

find . -path './.*' -prune -o -type f -print

~에 따르면(1) 매뉴얼 페이지 찾기:

전체 디렉토리 트리를 무시하려면 트리의 모든 파일을 확인하는 대신 -prune을 사용하십시오. 예를 들어, "src/emacs" 디렉터리와 그 아래의 모든 파일 및 디렉터리를 건너뛰고 발견된 다른 파일의 이름을 인쇄하려면 다음을 수행하십시오.

find . -path ./src/emacs -prune -o -print

답변3

u='-user "$USER"'
g='\('$(IFS=\ ;printf " -group %d " $(id -G))'\)'
eval "find / $u \( -perm -u=rx -o -prune \) -o \
             $g \( -perm -g=rx -o -prune \) -o \
                   -perm -o=rx -o -prune" | wc -l

이것은 작동합니다. 파일 권한은 항상 가능한 가장 구체적인 수준에서 평가되므로 -o걱정할 필요가 없습니다.또한많은. 파일이 사용자의 소유이고 다른 사람 및 그룹이 읽을 수 있지만 소유자가 파일을 읽을 수 없는 경우 사용자는 해당 파일을 읽을 수 없는 상태로 유지됩니다. 따라서 가장 구체적인 권한 일치부터 시작하여 -pruning거기까지 작업하면 됩니다.


find: `/proc/3379/task/3379/fd/5': No such file or directory
find: `/proc/3379/task/3379/fd/5': No such file or directory
find: `/proc/3379/task/3379/fd/5': No such file or directory
find: `/proc/3379/task/3379/fd/5': No such file or directory
find: `/proc/3379/task/3379/fdinfo/5': No such file or directory
find: `/proc/3379/task/3379/fdinfo/5': No such file or directory
find: `/proc/3379/task/3379/fdinfo/5': No such file or directory
find: `/proc/3379/task/3379/fdinfo/5': No such file or directory
find: `/proc/3379/fd/5': No such file or directory
find: `/proc/3379/fd/5': No such file or directory
find: `/proc/3379/fd/5': No such file or directory
find: `/proc/3379/fd/5': No such file or directory
find: `/proc/3379/fdinfo/5': No such file or directory
find: `/proc/3379/fdinfo/5': No such file or directory
find: `/proc/3379/fdinfo/5': No such file or directory
find: `/proc/3379/fdinfo/5': No such file or directory
327652

보시다시피 권한 문제는 언제든지 발생하지 않으며 가끔 발생하는 경쟁 문제가 있습니다. /proc이는 읽기 위해 파일을 생성할 때 피할 수 없는 문제입니다.

관련 정보