$ more a a b c 123 abc # 分割文件a,小于1000行,默认生成的文件名为xaa $ split a $ more xaa a b c 123 abc # 比较两个文件完全一样 $ diff -s a xaa Files a and xaa are identical # 指定后缀长度时要考虑到分割文件的数量,否则会提示后缀已用完,导致分割失败 $ split -b3 -a1 xxx split: output file suffixes exhausted # -b3指定分割大小为3字节 $ split -b3 a $ ll x* -rw-r--r-- 1 root root 3 Feb 15 20:00 xaa -rw-r--r-- 1 root root 3 Feb 15 20:00 xab -rw-r--r-- 1 root root 3 Feb 15 20:00 xac -rw-r--r-- 1 root root 3 Feb 15 20:00 xad -rw-r--r-- 1 root root 2 Feb 15 20:00 xae $ more x* :::::::::::::: xaa :::::::::::::: a b :::::::::::::: xab ::::::::::::::
c $ rm -rf x* # -l3指定分割行数为3行 $ split -l3 a $ ll x* -rw-r--r-- 1 root root 6 Feb 15 20:02 xaa -rw-r--r-- 1 root root 8 Feb 15 20:02 xab $ more x* :::::::::::::: xaa :::::::::::::: a b c :::::::::::::: xab :::::::::::::: 123 abc $ rm -rf x* # -d使用数字后缀 $ split -l2 -d a $ ls x* x00 x01 x02 $ rm -rf x* # 也可以指定分隔文件的路径和前缀 $ split -l2 -d a /tmp/aa $ ls /tmp/aa* /tmp/aa00 /tmp/aa01 /tmp/aa02 $ rm -rf /tmp/aa0* # 指定文件后缀为.txt $ split -l2 -d --additional-suffix=.txt --verbose a creating file ‘x00.txt’ creating file ‘x01.txt’ creating file ‘x02.txt’ $ ls x* x00.txt x01.txt x02.txt # 指定前缀a. $ split -l2 -d --verbose a a. creating file ‘a.00’ creating file ‘a.01’ creating file ‘a.02’ $ ls a.* a.00 a.01 a.02
# 压缩包文件的分割和合并 $ ll a.tar.gz -rw-r--r-- 1 root root 353047 Feb 15 20:12 a.tar.gz # 如下按照每个文件100K来分割压缩文件,会生成4个分割文件 $ split -b 100K -d a.tar.gz a.tar.gz. $ ll a.tar.gz* -rw-r--r-- 1 root root 353047 Feb 15 20:12 a.tar.gz -rw-r--r-- 1 root root 102400 Feb 15 20:14 a.tar.gz.00 -rw-r--r-- 1 root root 102400 Feb 15 20:14 a.tar.gz.01 -rw-r--r-- 1 root root 102400 Feb 15 20:14 a.tar.gz.02 -rw-r--r-- 1 root root 45847 Feb 15 20:14 a.tar.gz.03 $ mkdir dir1 $ mv a.tar.gz.0* dir1 $ cd dir1 $ ls a.tar.gz.00 a.tar.gz.01 a.tar.gz.02 a.tar.gz.03 # 直接解压分割文件,同时会生成一个0字节大小的压缩文件a.tar.gz,可以忽略该文件 $ cat a.tar.gz.0* | tar -zx $ ll -rw-r--r-- 1 root root 14 Feb 15 19:55 a -rw------- 1 root root 1552 Nov 27 05:45 anaconda-ks.cfg -rw-r--r-- 1 root root 37 Feb 15 17:06 a.sh -rw-r--r-- 1 root root 0 Feb 15 20:12 a.tar.gz -rw-r--r-- 1 root root 102400 Feb 15 20:15 a.tar.gz.00 -rw-r--r-- 1 root root 102400 Feb 15 20:15 a.tar.gz.01 -rw-r--r-- 1 root root 102400 Feb 15 20:15 a.tar.gz.02 -rw-r--r-- 1 root root 45847 Feb 15 20:15 a.tar.gz.03 -rw-r--r-- 1 root root 13 Feb 15 18:23 b -rw-r--r-- 1 root root 100 Feb 15 18:14 c ... # 这里先删除除了a.tar.gz*之外的所有文件 $ ls --hide=a.tar.gz* |xargs rm -rf $ ll -rw-r--r-- 1 root root 0 Feb 15 20:12 a.tar.gz -rw-r--r-- 1 root root 102400 Feb 15 20:15 a.tar.gz.00 -rw-r--r-- 1 root root 102400 Feb 15 20:15 a.tar.gz.01 -rw-r--r-- 1 root root 102400 Feb 15 20:15 a.tar.gz.02 -rw-r--r-- 1 root root 45847 Feb 15 20:15 a.tar.gz.03 # 合并分割文件为完整的压缩包,然后再正常解压文件 $ cat a.tar.gz.0* > a.tar.gz $ ll -rw-r--r-- 1 root root 353047 Feb 15 20:30 a.tar.gz -rw-r--r-- 1 root root 102400 Feb 15 20:15 a.tar.gz.00 -rw-r--r-- 1 root root 102400 Feb 15 20:15 a.tar.gz.01 -rw-r--r-- 1 root root 102400 Feb 15 20:15 a.tar.gz.02 -rw-r--r-- 1 root root 45847 Feb 15 20:15 a.tar.gz.03 $ tar -zxf a.tar.gz