여러 파일을 여러 아카이브에 압축 큰 CSV 파일

리눅스를 실행합니다. 약 150 개의 큰 CSV 파일 디렉토리가 있습니다. 단순히 zip -9그들에 대한 작업을 수행하면 여전히 너무 큰 단일 파일이 생성됩니다. 나는 그것들을 각각 30-40 CSV의 4 개 또는 5 개의 zip 파일로 간단히 압축하고 싶습니다; 이런 식으로 시퀀싱 또는 스패닝 된 우편 주문은 문제가되지 않습니다. 각 우편 번호는 독립적입니다. 이를 수행하는 간단한 방법이 있어야합니다. 어떤 제안?

(그리고 가능하다면 zip이 선호되는 형식입니다)



답변

-s로 충분하지 않습니까? zip -s를 사용하여 파일을 최대 크기의 파일로 분할 할 수 있습니다. 예 :

“zip -s 300m <2GB 파일>”은 다음을 생성합니다.

file.zip (300 mb, master file)
file.001.zip (300 mb)
file.002.zip (300 mb)
file.003.zip (300 mb)
file.004.zip (300 mb)
file.005.zip (300 mb)
file.006.zip (200 mb)

그런 다음 “unzip file.zip”은 모든 것을 압축 해제합니다.


답변

split 입력 파일 목록에서 사용하십시오 :-).

(테스트되지 않았으므로 정리를 위해 rm 명령을 포함 시켰습니다.)

ls *.csv > csvfiles
split -d -l30 - csvfiles < csvfiles
for i in csvfiles[0-9][0-9]; do
  zip "$i.zip" -@ < "$i"
done

rm csvfiles
rm csvfiles[0-9][0-9]