最近准备写个文件分割的工具,跟同事交流后,发现Linux早已提供了这个命令,来一起看下:
taoge@localhost Desktop> ls
a.txt
taoge@localhost Desktop> cat a.txt
3576661317
3577352199
3577724088
3578367381
3578587869
3579287088
3581127558
3582079011
3582736026
3585019998
taoge@localhost Desktop> filename="a.txt"
taoge@localhost Desktop> rm test_* -f
taoge@localhost Desktop> total=`cat $filename | wc -l`
taoge@localhost Desktop> onefile=$(( $total / 3 + 1))
taoge@localhost Desktop> split -l $onefile $filename -d -a 4 "test_"
taoge@localhost Desktop>
taoge@localhost Desktop>
taoge@localhost Desktop> ls
a.txt test_0000 test_0001 test_0002
taoge@localhost Desktop> wc -l test*
4 test_0000
4 test_0001
2 test_0002
10 total
taoge@localhost Desktop>
注意,如下命令我是批量赋值到linux命令终端的:
filename="a.txt"
rm test_* -f
total=`cat $filename | wc -l`
onefile=$(( $total / 3 + 1))
split -l $onefile $filename -d -a 4 "test_"
如果你喜欢,搞个脚本肯定是最好的啦。
我们回头看一下,上述命令把a.txt文件按行等分地拆成了3个文件,最重要的命令是:split -l $onefile $filename -d -a 4 "test_" ,其中-l表示按行,onefile是行数,filename是文件名,-d表示拆分后文件的后缀采用数字的形式,如0002,-a是规定这个数字的长短,test_是拆分后文件的前缀。很好懂。
如果要按照文件字节大小拆分,那该怎么搞起呢?很简单:split -b 5k a.txt -d -a 3 good_
split非常非常实用,在很多实际开发中,经常需要对文件进行拆分,然后分开处理。