最近准备写个文件分割的工具, 跟同事交流后, 发现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非常非常实用, 在很多实际开发中, 经常需要对文件进行拆分, 然后分开处理, 在后续文章中, 我们将继续介绍split的重要用途。