linux 文件切割?Linux 设置时间命令
很多朋友对于linux 文件切割和Linux 设置时间命令不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!
Linux下如何切割与合并大文件
在Linux系统下,当需要传输大文件时,我们可以通过切割文件为多个小文件来进行更高效和灵活的传输。这样做有两大优势:首先,如果在传输过程中网络出现中断,我们只需重新传输失败的小文件,而无需重新传输整个大文件,这样可以节省大量的时间和带宽资源。其次,小文件的并行传输可以显著提高整体传输速度。
切割文件的命令是`split`,其基本语法如下:
INPUT表示标准输入或者文件,PREFIX表示大文件分割后产生的小文件名字的前缀,默认为小写字母"x",后跟一组字符,按照类似"aa"、"ab"、"ac"的字母顺序组成一个一个的文件名。例如,将大文件切割成三个部分,文件名将会是"xaa"、"xab"、"xac"。而OPTION参数则允许我们根据不同的需求进行文件的切割,如按字节切割或按行切割。
下面,我们通过几个实例来具体演示如何使用split命令:
假设我们创建了一个大小为10M的文件。使用`split`命令将其切割为5个大小为2M的小文件。从结果中可以看到,原始文件的大小为10M,命令选项"-b 2M"表示每个输出文件大小为2M,总共切割成5个文件,文件名依次为"xaa"、"xab"、"xac"、"xad"、"xae"。
如果我们要处理的是一个大小为10K的文件,且文件的每一行内容都是"this is a test file"。使用`split`命令将这个文件切割为每个文件100行,并且新生成的文件前缀为"split_file_"。执行后,可以得知,总共512行的文件被分成了6个文件,文件名分别是"split_file_aa"、"split_file_ab"、"split_file_ac"、"split_file_ad"、"split_file_ae"、"split_file_af",其中前5个文件每份100行,最后一个文件仅有剩下的12行。
在切割小文件时,`split`命令还提供了其他选项,比如`-n`选项可以控制生成的小文件数量。使用`fallocate`创建一个5M大小的文件,然后使用`split`命令将其切割成5个文件,每个文件大小为1M。在这个实例中,切割后生成的5个文件分别为"x00"、"x01"、"x02"、"x03"、"x04"。
需要注意的是,在按照文件数量切割小文件时,如果原始文件的大小不足以分成指定数量的小文件,例如一个5字节的文件要切割成8个文件,此时只能生成5个文件,剩余的3个文件大小只能是0字节。通过`-e`选项可以禁止生成0字节大小的文件,从而避免生成无意义的空文件。
在完成了文件的切割后,我们需要将这些小文件传输至远程机器,并且合并成一个完整的文件。然后,通过计算原始文件和合并后文件的MD5值来验证传输是否成功。如果两者MD5值相同,表示传输过程成功;反之,则传输失败。
最后,通过实际操作和实例演示,我们可以看到,使用`split`命令进行文件切割不仅能够提高传输效率,还能够有效应对网络不稳定或中断的情况。在实际应用中,合理利用文件切割和传输策略,能够显著提升数据传输的可靠性与效率。
Linux系统下切割文件的split命令用法教程
你曾经是否想要把一个大文件分割成多个小文件?比如一个5gb日志文件,我们需要把它分成多个小文件,这样我们才有可能使用普通的文本编辑器读取它。有时我们需要传输20gb的大文件到另一台服务器,这就需要我们把它分割成多个文件,这样便于传输数据。下面我们来讲解使用split命令来切割文件的方法。
复制代码代码如下:
[root@localhost database]# ls-lh gkdb.db
-r--r--r-- 1 root root 411M Jul 23 17:20 gkdb.db
将将这个276M文件分割成20M的小文件,文件分割操作如下:
复制代码代码如下:
[root@localhost database]# split-b 20m gkdb.db gkdb_pack_
split是命今。
-B 20M是指将每个分卷文件最大20M。
gkdb.db需要分割的文件。
gkdb_pack_是指分割后的文件开头,分割后后的文件名一般为 gkdb_pack_aa、gkdb_pack_ab、gkdb_pack_ac依次类推。
显示分割后的文件名及大小
复制代码代码如下:
[root@localhost database]# ll-lh gkdb_pack_a*
-rw-r--r-- 1 root root 20M Jul 27 16:09 gkdb_pack_aa
-rw-r--r-- 1 root root 20M Jul 27 16:09 gkdb_pack_ab
-rw-r--r-- 1 root root 20M Jul 27 16:09 gkdb_pack_ac
-rw-r--r-- 1 root root 20M Jul 27 16:09 gkdb_pack_ad
-rw-r--r-- 1 root root 20M Jul 27 16:09 gkdb_pack_ae
-rw-r--r-- 1 root root 20M Jul 27 16:09 gkdb_pack_af
-rw-r--r-- 1 root root 20M Jul 27 16:09 gkdb_pack_ag
-rw-r--r-- 1 root root 20M Jul 27 16:09 gkdb_pack_ah
-rw-r--r-- 1 root root 20M Jul 27 16:09 gkdb_pack_ai
-rw-r--r-- 1 root root 20M Jul 27 16:09 gkdb_pack_aj
-rw-r--r-- 1 root root 20M Jul 27 16:09 gkdb_pack_ak
-rw-r--r-- 1 root root 20M Jul 27 16:09 gkdb_pack_al
-rw-r--r-- 1 root root 20M Jul 27 16:09 gkdb_pack_am
-rw-r--r-- 1 root root 20M Jul 27 16:09 gkdb_pack_an
-rw-r--r-- 1 root root 20M Jul 27 16:09 gkdb_pack_ao
-rw-r--r-- 1 root root 20M Jul 27 16:10 gkdb_pack_ap
-rw-r--r-- 1 root root 20M Jul 27 16:10 gkdb_pack_aq
-rw-r--r-- 1 root root 20M Jul 27 16:10 gkdb_pack_ar
-rw-r--r-- 1 root root 20M Jul 27 16:10 gkdb_pack_as
-rw-r--r-- 1 root root 20M Jul 27 16:10 gkdb_pack_at
-rw-r--r-- 1 root root 11M Jul 27 16:10 gkdb_pack_au
最下面的那个文件是剩余的文件。 20*20+11=411MB
合并文件
复制代码代码如下:
[root@localhost database]# cat gkdb_pack_*>gkdb.tar.gz
组装前和组装后的MD5值都是一样的,不信的话可以使用md5sum命令来检测一下。
如果要分割的是一个文本文件,比如有好几千行,当然每行的字符数是不等的,想要以行数为分割,比如每100行生成1个文件,只需要-l参数,如下:
复制代码代码如下:
[root@pps public_rw]# split-l 100 test.txt
其实,如果不加任何参数,默认情况下是以1000行大小来分割的。
实例1、以每个文件1000行分割
split命令分割文件成每个文件1000行,并且文件名依次为 [前缀]aa, [前缀]ab, [前缀]ac等,默认的前缀是X,每个文件的行数为1000行,命令如下:
复制代码代码如下:
$ split mylog
$ wc-l*
4450 mylog
1000 xaa
1000 xab
1000 xac
1000 xad
450 xae
实例2、以每个文件20MB分割
分割文件为多个20MB的文件,附带-b选项命令如下:
复制代码代码如下:
$ split-b 20M logdata
$ ls-lh| tail-n+2
-rw------- 1 sathiya sathiya 102M Jul 25 18:47 logdata
-rw------- 1 sathiya sathiya 20M Jul 25 19:20 xaa
-rw------- 1 sathiya sathiya 20M Jul 25 19:20 xab
-rw------- 1 sathiya sathiya 20M Jul 25 19:20 xac
-rw------- 1 sathiya sathiya 20M Jul 25 19:20 xad
-rw------- 1 sathiya sathiya 20M Jul 25 19:20 xae
-rw------- 1 sathiya sathiya 1.6M Jul 25 19:20 xaf
实例3、以每个文件50MB指定前缀分割
使用–bytes选项把文件分割成多个50MB的文件,–bytes类似-b选项,在第二个参数指定前缀。
复制代码代码如下:
$ split--bytes=50M logdata mydatafile
$ ls-lh
total 204M
-rw------- 1 sathiya sathiya 102M Jul 25 18:47 logdata
-rw------- 1 sathiya sathiya 50M Jul 25 19:23 mydatafileaa
-rw------- 1 sathiya sathiya 50M Jul 25 19:23 mydatafileab
-rw------- 1 sathiya sathiya 1.6M Jul 25 19:23 mydatafileac
实例4、基于行数分割文件
使用-l选项指定行数来把文件分割成多个行数相同的文件。
复制代码代码如下:
$ wc-l testfile
2591 testfile
$ split-l 1500 testfile importantlog
$ wc-l*
1500 importantlogaa
1091 importantlogab
2591 testfile
实例5、以数字后缀命名分割文件
使用-d选项可以指定后缀为数字,如00,01,02..,而不是aa,ab,ac。
复制代码代码如下:
$ split-d testfile
$ ls
testfile x00 x01 x02
Linux命令之文件切割命令split使用介绍
位置:/usr/bin/split
权限:所有用户
作用:
用法: split [OPTION]... [INPUT [PREFIX]]
选项:
-b后面可以接可以切割成文件的大小,可以加单位,例如:b,k, m
-l以行数来进行分割
PREFIX:前导符,可作为切割文件的前导文字
这里col1就是前导符,生成了3个文件col1aa、col1ab、col1ac
复制代码代码如下:
$ split-b 1k col col1
$ ls-hl
总用量 80K
-rw-rw-r-- 1 cwjy1202 cwjy1202 54一月 8 00:11 a
-rw-rw-r-- 1 cwjy1202 cwjy1202 39一月 11 12:58 b
-rw-rw-r-- 1 cwjy1202 cwjy1202 54一月 8 22:09 c
-rw-rw-r-- 1 cwjy1202 cwjy1202 3.0K一月 11 18:50 col
-rw-rw-r-- 1 cwjy1202 cwjy1202 1.0K一月 12 00:09 col1aa
-rw-rw-r-- 1 cwjy1202 cwjy1202 1.0K一月 12 00:09 col1ab
-rw-rw-r-- 1 cwjy1202 cwjy1202 1006一月 12 00:09 col1ac
-rw-rw-r-- 1 cwjy1202 cwjy1202 3.0K一月 11 18:45 col.list
-rw-rw-r-- 1 cwjy1202 cwjy1202 75十二 27 22:09 mudi
drwxr-xr-x 2 cwjy1202 cwjy1202 4.0K十二 29 23:47 myDir
-rwxr-xr-x 1 cwjy1202 cwjy1202 15K十二 28 23:20 nginx
-rw-rw-r-- 1 cwjy1202 cwjy1202 16K十二 27 20:16 nginxlog
-rw------- 1 cwjy1202 cwjy1202 1004八月 29 17:24 R语言做流程图.R
-rw-rw-r-- 1 cwjy1202 cwjy1202 33一月 3 16:13 test.bc
把文件col以行数作为分隔,生成文件的前导符为col,分成了三个文件colaa、colab、colac和colad
复制代码代码如下:
$ split-l 20 col col
$ ls-hl
总用量 84K
-rw-rw-r-- 1 cwjy1202 cwjy1202 54一月 8 00:11 a
-rw-rw-r-- 1 cwjy1202 cwjy1202 39一月 11 12:58 b
-rw-rw-r-- 1 cwjy1202 cwjy1202 54一月 8 22:09 c
-rw-rw-r-- 1 cwjy1202 cwjy1202 3.0K一月 11 18:50 col
-rw-rw-r-- 1 cwjy1202 cwjy1202 921一月 12 00:13 colaa
-rw-rw-r-- 1 cwjy1202 cwjy1202 1021一月 12 00:13 colab
-rw-rw-r-- 1 cwjy1202 cwjy1202 807一月 12 00:13 colac
-rw-rw-r-- 1 cwjy1202 cwjy1202 305一月 12 00:13 colad
-rw-rw-r-- 1 cwjy1202 cwjy1202 3.0K一月 11 18:45 col.list
-rw-rw-r-- 1 cwjy1202 cwjy1202 75十二 27 22:09 mudi
drwxr-xr-x 2 cwjy1202 cwjy1202 4.0K十二 29 23:47 myDir
-rwxr-xr-x 1 cwjy1202 cwjy1202 15K十二 28 23:20 nginx
-rw-rw-r-- 1 cwjy1202 cwjy1202 16K十二 27 20:16 nginxlog
-rw------- 1 cwjy1202 cwjy1202 1004八月 29 17:24 R语言做流程图.R
-rw-rw-r-- 1 cwjy1202 cwjy1202 33一月 3 16:13 test.bc
特殊例子:如何把下面的信息以5行分隔成多个文件
复制代码代码如下:
$ ls-al
总用量 92
drwxrwxr-x 3 cwjy1202 cwjy1202 4096一月 12 00:19.
drwxrwxr-x 21 cwjy1202 cwjy1202 4096十二 27 21:23..
-rw-rw-r-- 1 cwjy1202 cwjy1202 54一月 8 00:11 a
-rw-rw-r-- 1 cwjy1202 cwjy1202 39一月 11 12:58 b
-rw-rw-r-- 1 cwjy1202 cwjy1202 54一月 8 22:09 c
-rw-rw-r-- 1 cwjy1202 cwjy1202 3054一月 11 18:50 col
-rw-rw-r-- 1 cwjy1202 cwjy1202 921一月 12 00:13 colaa
-rw-rw-r-- 1 cwjy1202 cwjy1202 1021一月 12 00:13 colab
-rw-rw-r-- 1 cwjy1202 cwjy1202 807一月 12 00:13 colac
-rw-rw-r-- 1 cwjy1202 cwjy1202 305一月 12 00:13 colad
-rw-rw-r-- 1 cwjy1202 cwjy1202 3054一月 11 18:45 col.list
-rw-rw-r-- 1 cwjy1202 cwjy1202 75十二 27 22:09 mudi
drwxr-xr-x 2 cwjy1202 cwjy1202 4096十二 29 23:47 myDir
-rwxr-xr-x 1 cwjy1202 cwjy1202 14698十二 28 23:20 nginx
-rw-rw-r-- 1 cwjy1202 cwjy1202 16298十二 27 20:16 nginxlog
-rw------- 1 cwjy1202 cwjy1202 1004八月 29 17:24 R语言做流程图.R
-rw-rw-r-- 1 cwjy1202 cwjy1202 33一月 3 16:13 test.bc
如下:split-l 5后面的-,那个-表示需要stdout或者stdin
另外,lsal表示生成文件的名字前导符,生成的名字叫:lsalaa、lsalab、lsalac、lsalad
复制代码代码如下:
$ ls-la| split-l 5- lsal
$ ls-al
总用量 108
drwxrwxr-x 3 cwjy1202 cwjy1202 4096一月 12 00:21.
drwxrwxr-x 21 cwjy1202 cwjy1202 4096十二 27 21:23..
-rw-rw-r-- 1 cwjy1202 cwjy1202 54一月 8 00:11 a
-rw-rw-r-- 1 cwjy1202 cwjy1202 39一月 11 12:58 b
-rw-rw-r-- 1 cwjy1202 cwjy1202 54一月 8 22:09 c
-rw-rw-r-- 1 cwjy1202 cwjy1202 3054一月 11 18:50 col
-rw-rw-r-- 1 cwjy1202 cwjy1202 921一月 12 00:13 colaa
-rw-rw-r-- 1 cwjy1202 cwjy1202 1021一月 12 00:13 colab
-rw-rw-r-- 1 cwjy1202 cwjy1202 807一月 12 00:13 colac
-rw-rw-r-- 1 cwjy1202 cwjy1202 305一月 12 00:13 colad
-rw-rw-r-- 1 cwjy1202 cwjy1202 3054一月 11 18:45 col.list
-rw-rw-r-- 1 cwjy1202 cwjy1202 238一月 12 00:21 lsalaa
-rw-rw-r-- 1 cwjy1202 cwjy1202 294一月 12 00:21 lsalab
-rw-rw-r-- 1 cwjy1202 cwjy1202 302一月 12 00:21 lsalac
-rw-rw-r-- 1 cwjy1202 cwjy1202 201一月 12 00:21 lsalad
-rw-rw-r-- 1 cwjy1202 cwjy1202 75十二 27 22:09 mudi
drwxr-xr-x 2 cwjy1202 cwjy1202 4096十二 29 23:47 myDir
-rwxr-xr-x 1 cwjy1202 cwjy1202 14698十二 28 23:20 nginx
-rw-rw-r-- 1 cwjy1202 cwjy1202 16298十二 27 20:16 nginxlog
-rw------- 1 cwjy1202 cwjy1202 1004八月 29 17:24 R语言做流程图.R
-rw-rw-r-- 1 cwjy1202 cwjy1202 33一月 3 16:13 test.bc复制代码代码如下:
$ wc-l lsal*
5 lsalaa
5 lsalab
5 lsalac
3 lsalad
18总用量