수백만 개의 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