Linux 分割文件和数据

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

分割文件和数据

在一些情况下,需要把文件分割成多个小文件,比如为:提高可读性,生成日志,通过E--mail发送文件,以下会看到将文件分隔成不同大小的多种方法。

以下,我们使用dd命令创建一个大小为1G的文件来做测试文件。

# dd if=/dev/zero of=/tmp/data.log bs=1024M count=1

创建好的data.log文件,我们存储在了/tmp目录下。

下面适用split命令对data.log文件进行分割。

# split -b 100M data.log 
# ls
data.log  xaa  xab  xac  xad  xae  xaf  xag  xah  xai  xaj  xak

命令解析:上面的命令将data.log文件分割成多个文件,每个文件大小为100M。这些文件以xaa,xab,xac..的形式命名,这表明它们都有一个字母后缀。如果想用数字为后缀,可以另外使用-d参数。此外,使用-a参数可以指定后缀长度。

# split -b 100M -d -a 4 data.log
# ls 
data.log  x0000  x0001  x0002  x0003  x0004  x0005  x0006  x0007  x0008  x0009  x0010

为分割后的文件指定文件名前缀

# split -b 100M data.log -d -a 4 data_
# ls  
data_0000  data_0001  data_0002  data_0003  data_0004  data_0005  data_0006  data_0007  data_0008  data_0009  data_0010  data.log

如果想通过行数来分割文件,可以使用-l参数

# split -l 10 data.log

命令解析:上面命令把data.log文件分割成多个文件,每个文件10行内容,因为我们使用dd生成的文件,所以该文件内容是0行,你可以自己创建一个50行数据的文件做测试(文件如果很大,分割的文件数会很多,这种情况可以把-l参数的值设置大些。)

另外一个有趣的工具,csplit,它能依据指定的条件和字符串匹配对日志文件进行分割。

csplit是split工具的一个变体。split只能根据文件大小与行数进行分割,而csplit可以根据文本自身的特点进行分割,比如:是否存在某个单词或文本内容都可以作为分割的条件,这里就不详细说明了,有兴趣可以自行查看帮助。

转载于:https://my.oschina.net/u/3136306/blog/821582

你可能感兴趣的:(Linux 分割文件和数据)