검색하거나 열 수 없는 발견된 파일을 무시하시겠습니까?

검색하거나 열 수 없는 발견된 파일을 무시하시겠습니까?

HP Unix에서 다음 명령을 사용하여 대용량 파일을 검색하고 있습니다.

find . -type f -size +100000000c -exec ls -lrt {} \;

결과는 다음과 같습니다.

-rw-rw-rw-   1 qa1wrk32   test       169263642 Oct 27 12:28 ./rgs/test/qa1wrk32/DB/Dmp/intrefbl01_20111027_Backup_for_qa1ref32_CNSTRNO.dmp.gz
-rw-rw-rw-   1 qa1wrk32   test       173779937 Oct 24 16:33 ./rgs/test/qa1wrk32/DB/Dmp/qa1ref32_20111024_Backup_before_Refresh.dmp.gz
-rw-rw-rw-   1 qa1wrk32   test       105020030 Oct 31 09:53 ./rgs/test/qa1wrk32/DB/Dmp/qa1app32_20111031_R112_Before_CopyBan_from_INT01_to_ENV32_for_LISA_CNSTRNO.dmp.gz
find: cannot open ./rgs/test/maes32/master/.ssh
find: cannot open ./rgs/test/qa1oln32/.ssh
find: cannot open ./rgs/test/qa1oln32/local_tlg/bin/.adm
find: cannot search ./rgs/test/qa1wrk91/mail

나는 검색할 수 없거나 열 수 없는 출력 라인을 찾고 싶지 않습니다. 필터링할 수 있는 방법이 있나요? 더 좋은 점은 find특정 권한 집합이 있는 파일을 검색할 수 있다는 것입니다.

답변1

find오류 stderr를 무시하고 싶다면 가장 쉬운 방법은 다음과 같습니다.

find ... 2> /dev/null

find-perm권한을 기준으로 필터링하는 옵션 도 있습니다 .

답변2

특정 권한이 있는 파일을 검색 하도록 지시할 수 있지만 find정확히 필요한 것은 아닙니다. find탐색할 권한이 없는 디렉토리는 탐색하지 말라고 알려주어야 합니다 . 실제로 find디렉토리(홈 디렉토리)로 이동하지 말라고 말하기는 쉽지만 -prune탐색할 권한이 없는 디렉토리를 일치시키는 쉬운 방법은 없습니다. 존재하다암소 비슷한 일종의 영양find, 쓸 수는 -readable -executable있지만기준find그런 옵션은 없습니다(또한HP-UXfind).

권한에 따라 액세스 권한을 다시 구축할 수 있지만 쉽지 않습니다. ACL이 있는 시스템(HP-UX에는 ACL이 있음)에서는 다음 사항도 고려해야 합니다.

find . -type d \
       \! \( -user $(id -u) -perm -u+rx -o \
             \( -group $(id -G | sed 's/ / -o -group /g') \) -perm -g+rx -o \
             -perm -a+rx \) -prune -o \
     -type f -size +100000000c -exec …

실제로 이것이 업무상 중요한 스크립트가 아닌 이상 다음을 원할 것입니다.다음의 오류를 무시하세요.find. (업무상 중요한 스크립트인 경우 Perl이나 Python과 같이 오류 조건을 더 잘 필터링할 수 있는 다른 언어로 작성하세요.)

관련 정보