백만 개의 XML 파일이 포함된 디렉토리에서 여러 개의 zip을 만드는 방법은 무엇입니까?

백만 개의 XML 파일이 포함된 디렉토리에서 여러 개의 zip을 만드는 방법은 무엇입니까?

수백만 개의 XML 파일이 포함된 디렉터리가 있습니다. n개의 xml 파일이 포함된 여러 개의 zip 파일을 만들고 싶습니다. 예: n = 10000이면 100개의 zip 파일을 생성하고 싶습니다. 즉, 각 zip 파일에는 10000개의 xml 파일만 포함됩니다.

이러한 zip 파일을 만드는 가장 효율적인 방법은 무엇입니까? 수백만 개의 xml 파일이 포함된 여러 폴더에 대해 이 프로세스를 반복해야 하므로 이 프로세스에 더 많은 시간이 걸리는 것을 원하지 않습니다.

답변1

이는 유용할 수 있습니다.

$ zip all.zip *.xml  ## create a big archive.

아카이브의 전체 크기를 찾으십시오.

$ ls -lh all.zip

이제 필요에 따라 대규모 아카이브를 더 작은 아카이브로 분할합니다.

$ split -b 5M all.zip ## creates 5 MB zips

참고: 아카이브를 다시 연결하지 않으면 아카이브 압축을 풀더라도 아무런 효과가 없습니다.

cat x* > oldbigzip.

답변2

나는 이렇게 할 것이다:

# Create file list
find . -type f -name '*.xml' > filelist

n=10000
fileno=1

# Loop through list, extracting n names each time
for i in $(seq 1 $n $(wc -l < filelist)); do
  zipfile="zipfile$(printf "%04d" $((fileno++)))"
  sed -n "$i,$((i+n-1))p" filelist | zip $zipfile -@
done

관련 정보