![여러 하위 디렉터리 및 zip 디렉터리에서 파일 검색](https://linux55.com/image/90217/%EC%97%AC%EB%9F%AC%20%ED%95%98%EC%9C%84%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%20%EB%B0%8F%20zip%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EC%97%90%EC%84%9C%20%ED%8C%8C%EC%9D%BC%20%EA%B2%80%EC%83%89.png)
1000개 폴더에서 2,000개 이상의 파일을 추출해야 합니다. 문제는 각 폴더 내부와 외부에 압축된 폴더와 내가 접근해야 하는 temp.processed 파일 형식이 포함된 "fileholder"라는 또 다른 폴더가 있다는 것입니다. 이 모든 파일을 검색하여 다른 위치에 복사할 수 있는 방법이 있습니까? 아니면 모든 zip 파일을 추출해야 합니까?
나는 다음을 실행했다:
find -type f -iname \*.PROCESSED
하지만 압축 파일 내에서는 검색되지 않습니다. 누구든지 올바른 방향으로 나를 가리킬 수 있습니까?
답변1
나는 두 번의 호출로 그것을 할 것입니다 find
:
zip
모든 파일을 찾아 처리하는 방법- 다른 하나는 일반 파일을 처리합니다.
이것은 약간 번거롭고 복잡한 부분은 awk
호출입니다. 처리하는 출력은 unzip -l
스크립트 친화적이지 않습니다. 헤더를 제거하기 위해 숫자로 시작하는 줄을 검색하고 빈 줄을 제거한 다음 마지막으로 .process
대소문자를 구분하지 않고 일치시킵니다.
FINDDIR="."
for f in `find "$FINDDIR" -type f -iname '*.zip'`; do
dir=`dirname "$f"`
for p in `unzip -l sth.zip | awk '{if (match($1, /^[0-9]+$/) && $1 > 0 && match(tolower($4), /\.processed$/)) print $4}'`; do
echo "$dir/$p"
done
find "$FINDDIR" -type f -iname '*.processed'
이는 재귀를 처리할 수 없습니다 zip
. 즉, 하나의 zip 아카이브가 다른 zip 아카이브 안에 있는 경우입니다.