z/OS(메인프레임 버전 2.1) Unix 시스템 서비스 영역에서 다음과 같이 find와 관련된 명령을 실행하려고 했습니다.
다음과 같은 디렉터리 구조가 있다고 가정해 보겠습니다.
/tmp
/dir1-include
/dir2-exclude
/dir3-include
/dir4-exclude
dir1-include
90일보다 오래된 모든 파일의 합계를 계산하려고 합니다 dir3-include
. 다음 명령이 작동하지 않는 것 같습니다.
find /tmp/ \( -path /dir2-exclude -prune -o \
-path /dir4-exclude -prune \
\) \
-o -type f -mtime +90 | wc -l
그것은 나에게 다음을 제공합니다:
FSUM6372 Unknown option "-path"
Usage: find directory ... expression`
답변1
이를 수행하는 방법에는 여러 가지가 있습니다. 다음 옵션은 모두 z/OS에 적용됩니다.
find
이를 지원하지 않고 파일 -path
이름에 개행 문자(파이프 연결)가 포함되어 있지 않다고 가정하면 wc
다음을 사용하여 문제를 해결할 수 있습니다 grep
.
find /tmp/ -type f -mtime +90 | grep -v /tmp/dir2-exclude | grep -v /tmp/dir4-exclude | wc -l
제외하는 디렉터리가 패턴을 공유하는 경우(유지하려는 항목을 제외하지 않고) 다음과 같이 단순화할 수 있습니다.
find /tmp ... | grep -cv '/tmp/dir.*-exclude'
...디렉토리나 파일 이름에 개행 문자가 포함되어 있으면 find의 출력이 잘못 평가된다는 점을 다시 한 번 이해하세요.
find
여러 시작 경로를 지원하고 포함하려는 경로가 패턴을 공유하는 경우 다음 방법으로 문제를 해결할 수 있습니다.
find /tmp/dir*-include -type f -mtime +90 | wc -l
또한 -prune 옵션은 위 디렉터리 아래로 떨어지지 않습니다.
find /tmp/ -type d -name "/dir2-exclude" -prune -o -type d -name "/dir4-exclude" -prune -o -type f -mtime +90 | wc -l