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과 같이 오류 조건을 더 잘 필터링할 수 있는 다른 언어로 작성하세요.)