디스크 볼륨에서 파일 목록을 생성해야 합니다. 일부 디렉터리(루트 아래의 모든 숨겨진 디렉터리)에는 이상한 권한이 있어 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
-readable
GNU 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
이는 읽기 위해 파일을 생성할 때 피할 수 없는 문제입니다.