인디노트

[bash: split, cat] 파일 분할/재조립 본문

개발 플랫폼 및 언어

[bash: split, cat] 파일 분할/재조립

인디개발자 2019. 1. 10. 19:06
용량이 큰 텍스트 또는 바이너리 파일을 분할하거나 재조립할 필요가 있을 때, split 명령과 cat 명령을 활용하면 되겠다. 

split 명령의 형식은 아래와 같다. 

split [options] file prefix

우선 텍스트 파일을 분할해 보자. 예를 들어 myfile.txt 파일을 100행 단위로 잘게 나누어 myfile_part로 시작되는 파일명으로 저장하는 경우다. 터미널창에서 아래와 같이 입력해 보자. -l 옵션으로 나눌 행(line) 단위를 지정하면 된다. 

split -l 100 myfile.txt myfile_part

나누어진 결과는 myfile_partaa, myfile_partab,... 이런 식으로 저장된다. 

기본 순서가 aa, ab, ac 이런식으로 정해지는데 알파벳이 싫으면 수자를 이용해서 00, 01, 02 이런 식으로 순서를 표시할 수도 있다. -d 옵션을 사용.

split -d -l 100 myfile.txt myfile_part

결과 파일은 myfile_part00, myfile_part01,... 이런 식이 될 것이다.

만약 번호 자리수를 늘리려면 -a 옵션을 사용하자. -a 3 이렇게 하면 세자리로 늘어난다.

split -d -a 3 -l 100 myfile.txt myfile_part

결과 파일은 myfile_part000, myfile_part001,... 이런 식이다.

바이너리 파일은 행 단위가 아니라 바이트(byte) 단위로 분할한다. -l 옵션 대신 -b 옵션을 사용하면 되겠다. 크기 설정에 킬로(k), 메가(m), 기가(g) 등 단위도 사용 가능.

myfile.bin 파일을 100kb 단위로 분할하는 예시는 아래와 같다. 

split -d -a 3 -b 100k myfile.bin myfile_part


재조립 요령은 텍스트/바이너리 상관 없이 동일하게 cat 명령을 사용하면 된다. 앞의 예시에서 분할된 파일을 재조립하려면 터미널창에서 아래와 같이 입력한다. 
 
cat myfile_part* > myfile_merged

마음의 평화를 위해 파일 순서를 명시적으로 맞추고 싶다면 아래와 같이 sort 명령을 같이 사용할 수도 있긴 한데, 굳이 이렇게 하지 않아도 큰 문제 없이 잘 합쳐지는 것 같다.

ls myfile_part* | sort | xargs cat > myfile_merged


반응형
Comments