여러 하위 디렉터리 및 zip 디렉터리에서 파일 검색

여러 하위 디렉터리 및 zip 디렉터리에서 파일 검색

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 아카이브 안에 있는 경우입니다.

관련 정보