728×170
CSV와 같은 데이터 파일이 1GB 이상으로 파일 사이즈가 너무 큰 경우 작은 파일 크기로 분할해야 할 때가 있습니다. 또는 디버깅용 로그 파일이 너무 큰 경우 작은 파일 크기로 분할하는 경우도 종종 있습니다. 이러한 파일 분할에 사용할 수 있는 유틸리티가 split입니다. split은 리눅스에서는 coreutils 패키지에서 설치되고 Linux (우분투, CentOS) 뿐 아니라 Mac OS에서 사용할 수 있고, Windows에서는 WSL이나 Cygwin 환경에서 사용할 수 있습니다.
split 사용 예
대용량 1GB CSV 파일을 100MB 단위로 분할
split 사용법과 옵션
split [OPTION]… [FILE [PREFIX]]
→ FILE을 PREFIXaa, PREFIXab, PREFIXac로 분할함 (default 값 사용: 1000 line)
split 옵션
-a, –suffix-length=N generate suffixes of length N (default 2)
–additional-suffix=SUFFIX append an additional SUFFIX to file names
-b, –bytes=SIZE put SIZE bytes per output file
-C, –line-bytes=SIZE put at most SIZE bytes of records per output file
-d use numeric suffixes starting at 0, not alphabetic
–numeric-suffixes[=FROM] same as -d, but allow setting the start value
-x use hex suffixes starting at 0, not alphabetic
–hex-suffixes[=FROM] same as -x, but allow setting the start value
-e, –elide-empty-files do not generate empty output files with ‘-n’
–filter=COMMAND write to shell COMMAND; file name is $FILE
-l, –lines=NUMBER put NUMBER lines/records per output file
-n, –number=CHUNKS generate CHUNKS output files; see explanation below
-t, –separator=SEP use SEP instead of newline as the record separator; ‘\0’ (zero) specifies the NUL character
-u, –unbuffered immediately copy input to output with ‘-n r/…’
* SIZE argument is an integer and optional unit (example: 10K is 10*1024). Units are K,M,G,T,P,E,Z,Y
split 사용 예
bigfile.mp4 1024MB 크기로 기준으로 smallfile_aa, smallfile_ab, smallfile_ac로 분할
$ split -b 1024m bigfile.mp4 smallfile_
bigfile.mp4 1024MB 크기로 분할 smallfile_aa, smallfile_ab, smallfile_ac로 분할
bigfile.mp4 1024MB 크기로 기준으로 smallfile_aa, smallfile_ab, smallfile_ac로 분할하고, mp4 확장자 추가
$ split -b 1024m –additional-suffix=.mp4 bigfile.mp4 smallfile_
additional-suffix 추가 예제
bigfile.mp4 1024MB 크기로 기준으로 smallfile_00, smallfile_01, smallfile_02로 분할하고, mp4 확장자 추가
$ split -b 1024m –additional-suffix=.mp4 –numeric-suffixes=0 bigfile.mp4 smallfile_
–numeric surffix 추가
bigfile.mp4 1024MB 크기로 기준으로 smallfile_000, smallfile_001, smallfile_002로 surffix 길이가 3인 파일로 분할하고, mp4 확장자 추가
$ split -b 1024m –additional-suffix=.mp4 –numeric-suffixes=0 -a 3 bigfile.mp4 smallfile_
-a –suffix-length 옵션 사용 예
bigtextfile.txt 200MB 크기로 기준으로 smallfile_00, smallfile_01, smallfile_02로 분할하고, .txt 확장자 추가
$ split -C 200m –additional-suffix=.txt –numeric-suffixes=0 bigtextfile.txt smallfile_
-C, –line-bytes=SIZE 사용 예제
bigtextfile.txt 파일을 5개로 분할하고 2자리수 숫자 surffix와 확장자 txt파일로 저장함
$ split –number=5 –additional-suffix=.txt –numeric-suffixes=0 bigtextfile.txt smallfile_
-n, –number=CHUNKS 사용 예제
파일 합치치는 명령어 cat
split이 파일을 분할하는 용도라면 cat 명령어를 사용해서 파일 하나로 합칠 수 있습니다.
$ cat SPITED_FILES_AS_LIST > NEW_FILE
→ SPITED_FILES_AS_LIST 을 NEW_FILE로 합치기
$ ls myfile_part* | sort | xargs cat > myfile_merge
→ myfile_part* 파일을 sort 하고, cat으로 파일 합치기
관련 글:
[SW 개발/Data 분석 (RDB, NoSQL, Dataframe)] – 우분투 20.04에서 MariaDB 설치 및 기본 동작 확인 명령어
[SW 개발/REST API] – 자주 사용하는 curl 명령어 옵션과 예제
[SW 개발/Data 분석 (RDB, NoSQL, Dataframe)] – 우분투 20.04에서 Jupyter Notebook 사용법: Web browser에서 Python 개발 환경 구축
[블로그 관리/티스토리 블로그 관리] – 티스토리 글이 의도치 않은 삭제된 경우 구글 검색 Cache 를 이용해서 복구하기
[개발환경/우분투] – 우분투20.04에서 Bluetooth 5.0 USB 동글 설치: Realtek 8761B Chipset
[개발환경/Tips] – youtube-dl로 Youtube에서 MP3 다운로드 시 아티스트와 앨범 아트(meta data) 포함시키는 방법
[SW 개발/Python] – Python으로 압축 파일 다루기: Zipfile 과 shutil.make_archive()
[SW 개발/Python] – Python: xmltodict를 활용하여 XML를 JSON으로 변환하는 방법
[개발환경/우분투] – 우분투 20.04에서 Grub 편집: grub-customizer 와 Grub theme 설정
[SW 개발/Python] – Python 폴더 및 파일 처리 함수 모음
그리드형
반응형
안녕하세요 오랜만에 포스팅을 하고보니 새해가 시작됬네요 한살 한살 먹다보니 어느새… 다들 새해에는 좋은일만 있길 기원합니다. 올해는 좀 더 유익한 글을 많이 쓰도록 노력할게요 ㅠㅠ 포스팅을 시작하겠습니다.
업무 중 대용량 csv파일을 나누기위해 만든 소스입니다.(※ csv 파일만 되니 확인 하세요)
간단한 소스인 만큼 간단히 설명하겠습니다.
※ 사용법 ※
1. python2.7 버전 설치 가 필요합니다.
2. ★ 표시된 부분만 변경하면 사용이 가능 합니다.
3. 간혹 윈도우 사용자 분이 경로를 복사할 경우 ‘\’ -> ‘/’ 변경 필수
( 그냥 될 수 도 있습니다.[xp같은 경우는 안되더군요] )
반응형
① : 사용 할 “분류 파일 경로”, “분류 파일명”, “csv별 라인 개수”를 나타냅니다.
ex) nDivCnt = 1000일 경우 한 csv당 1000라인을 갖게 됩니다.
② : 디렉토리가 없을경우 분류된 파일이 저장될 디렉토리 생성
③ : 분류할 파일을 읽어 라인 별 저장 코드
(어려운 코드는 아니기때문에 간단한 설명으로 대체했습니다.)
프로그램은 있었지만… 한글이 깨져서 간단히 짠 코드입니다.
짜긴 귀찮으신 분들 추천★..!
날씨 추운데 건강 조심하세요 다 들..
모두 2018년 새해 복 많이받으세요~
반응형