리눅스에서 파일 분할과 합치기, linux file split cat
출처 : http://www.joon.pe.kr/blog/161
출처: http://bigsun84.tistory.com/310
제목그대로 입니다.어떤 이유에서건 가끔가다 큰화일을 분할해야할때가 있을 때 유용합니다.
$split -b 300k
하면 300k씩화일부할됩니다. man 페이지에보면 화일이름까지 정할수 있습니다. 합칠때는
$cat 분활된 화일이름 > 합칠화일이름
예>
만약 linux.tar.gz 1G가 있을때
$split -b 100m
하면 xxa xxb xxc 이런식으로 100메가씩나눠집니다.
합칠때
$cat xx* > linux2.tar.gz 하면 화일이 합쳐집니다.
더자세한건 man split 해보세요.
ex)
split --additional-suffix=.ts -n 8 -a 3 ./refregiator.ts ref_
split --additional-suffix=.raw -b 19200000 -a 5 ./test_temp.raw test_audio_
pcm 분할
split --additional-suffix=.raw -b 320000 -a 5 ./test_temp.raw test_audio_
-a 분할되는 파일 뒤에 붙는 넘버링의 자릿수
-b 분할파일의 바이트 수
-n n등분
split : 큰파일을 여러 작은 파일로 나눌때 사용한다.
$ split tree tree_
$ ls -l
51 Jul 12 14:58 test 185807 Jul 12 14:03 tree 53732 Jul 12 15:08 tree_aa 68378 Jul 12 15:08 tree_ab 62928 Jul 12 15:08 tree_ac 769 Jul 12 15:08 tree_ad |
$ wc -l tree*
1000 tree_aa 1000 tree_ab 1000 tree_ac 19 tree_ad 3019 total |
## 옵션없이 사용하면 분할파일뒤에 영문 2자리가 추가되어 구분합니다.
## 분할 기준은 하나의 파일이 1000라인으로 분할 됩니다.
## 옵션 정리
-a : 분할되는 파일뒤에 붙을 길이를 지정합니다.
$ split -a 3 tree tree_
$ ls -l
51 Jul 12 14:58 test 185807 Jul 12 14:03 tree 53732 Jul 12 15:11 tree_aaa 68378 Jul 12 15:11 tree_aab 62928 Jul 12 15:11 tree_aac 769 Jul 12 15:11 tree_aad |
--additional-suffix : 분할파일 자릿수 뒤에 추가적으로 이름을 설정합니다.
$ split --additional-suffix=.txt tree tree_
$ ls -l
51 Jul 12 14:58 test 185807 Jul 12 14:03 tree 53732 Jul 12 15:11 tree_aa.txt 68378 Jul 12 15:11 tree_ab.txt 62928 Jul 12 15:11 tree_ac.txt 769 Jul 12 15:11 tree_ad.txt |
-b : 분할되는 기준을 바이트 크기로 분할합니다.
$ split -b 50000 tree tree_
$ ls -l
185807 Jul 12 14:03 tree 50000 Jul 12 15:12 tree_aa 50000 Jul 12 15:12 tree_ab 50000 Jul 12 15:12 tree_ac 35807 Jul 12 15:12 tree_ad |
## 라인 중간에 분할 될수 있음
-C : 라인을 기준으로 지정 바이트가 넘지 않도록 파일을 분할합니다.
$ split -C 50000 tree tree_
$ ls -l
51 Jul 12 14:58 test 185807 Jul 12 14:03 tree 49952 Jul 12 15:12 tree_aa 49962 Jul 12 15:12 tree_ab 49926 Jul 12 15:12 tree_ac 35967 Jul 12 15:12 tree_ad |
## 라인 중간에 분할 안됨. 한라인계산하여 지정바이트로 분할함
-d : 분할 파일이름뒤에 영문이 아닌 숫자로 지정합니다. (0부터 시작)
$ split -d tree tree_
$ ls -l
185807 Jul 12 14:03 tree 53732 Jul 12 15:13 tree_00 68378 Jul 12 15:13 tree_01 62928 Jul 12 15:13 tree_02 769 Jul 12 15:13 tree_03 |
## 89까지는 두자리이고 그 이후부터 9001로 네자리로 출력됨.
## 분할 파일이 90개를 넘어가면 -a으로 설정이 필요함.
--numeric-suffixes : -d 옵션과 동일하지만 시작값을 지정합니다.
$ split --numeric-suffixes=90 tree tree_
$ ls -l
185807 Jul 12 14:03 tree 53732 Jul 12 15:13 tree_90 68378 Jul 12 15:13 tree_91 62928 Jul 12 15:13 tree_92 769 Jul 12 15:13 tree_93 |
## 기본 2자리이므로 99이후 생성안됨.
## 세자리 이상 지정시에 -a 옵션으로 설정이 필요함.
-l : 라인수 기준으로 파일을 분할 합니다.
$ split -l 1500 tree tree_
$ ls -l
185807 Jul 12 14:03 tree 88812 Jul 12 15:14 tree_aa 96226 Jul 12 15:14 tree_ab 769 Jul 12 15:14 tree_ac |
$ wc -l tree_*
1500 tree_aa 1500 tree_ab 19 tree_ac 3019 total |
-n : 파일을 균등하게 1/N 나누어 분할합니다.
N : 몇 등분으로 나눌지 지정 합니다.
$ split -n 4 tree tree_
$ ls -l
185807 Jul 12 14:03 tree 46451 Jul 12 15:15 tree_aa 46451 Jul 12 15:15 tree_ab 46451 Jul 12 15:15 tree_ac 46454 Jul 12 15:15 tree_ad |
K/N : (N)등분으로 파일을 분할 할 때 지정한(K) 번째를 출력합니다 (파일은 생성되지 않습니다)
$ split -n 2/4 tree tree_
l/N : (N)등분으로 파일을 분할 할 때 라인기준으로 바이트 계산하여 분할 합니다.
$ split -n l/4 tree tree_
$ ls -l
185807 Jul 12 14:03 tree 46484 Jul 12 15:17 tree_aa 46465 Jul 12 15:17 tree_ab 46406 Jul 12 15:17 tree_ac 46452 Jul 12 15:17 tree_ad |
l/K/N : (N)등분으로 파일을 나눌때 라인기준으로 바이트 계산하여 (K)번째 를 출력합니다. (파일은 생성되지 않습니다.)
$ split -n l/2/4 tree tree_
r/N : (N)등분으로 파일을 분할할 때 라운드 로빈 방식으로 파일을 분할 합니다.
$ cat test
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
$ split -n r/4 test test_
$ ls -l
51 Jul 12 14:58 test 12 Jul 12 15:19 test_aa 13 Jul 12 15:19 test_ab 13 Jul 12 15:19 test_ac 13 Jul 12 15:19 test_ad |
$ cat test_aa
1 5 9 13 17 |
$ cat test_ab
2 6 10 14 18 |
$ cat test_ac
3 7 11 15 19 |
$ cat test_ad
4 8 12 16 20 |
r/K/N : (N)등분으로 파일을 분할 할 때 라운드 로빈 방식으로 분할한 (K)번째를 출력합니다. (파일은 생성되지 않습니다.)
$ split -n r/2/4 test test_
|
--help : 도움말을 출력한다.
--version : 버전 정보를 출력한다.
출처: http://bigsun84.tistory.com/310 [순수한놈 블로그]
'Linux > Linux 명령어' 카테고리의 다른 글
리눅스에서 파일 확장자 명 일괄 수정하기 (0) | 2014.03.15 |
---|---|
가상 메모리 통계 표시(vmstat ) (0) | 2013.02.02 |
mount -o loop 옵션 (0) | 2011.10.18 |