导航:首页 > 文件教程 > linux大文件切割

linux大文件切割

发布时间:2023-03-25 20:43:40

linux系统下大文件的分割/搜索/导出

在linux系统下用vim打开大小几个G、甚至轿散并几十个G的文件时,是非常慢的。

这时,我们可以利用下面的方法分割文件,然后再打开。

1、查看/导出文件的前多少行

上面命令的意思是:把big.log文件前10000行的数据写入到temp.log文件中。

2 、查看文件掘氏的后多少行

上面命令的意思是:把big.log文件后10000行的数据写入到temp.log文件中。

3 、查看文件的几行到几行

上面命令的意思是:把big.log文件第10到10000行的数据写入到temp.log文件中。

4 、根据查询条件导出

5、 实闭迹时监控文件输出(查看日志时经常会用到)

㈡ Linux里面分割,切片是什么

在Linux最常用的文件生成和切片工具是dd,它功能比较全面,但无法以行为单位提取文件数据,也无法直接将文件按大小或行数进行均分(除非借助循环)。另两款数据分割工具split和csplit能够比较轻松地实现这些需求。csplit是split的升级版。
1.1 dd命令
从if指定的文件读取数据,写入到of指定的文件。使用bs指定读取和写入的块大小,使用count指定读取和写入的数据块数量,bs和count相乘就是文件总大小。可以指定skip忽略读卜闹取if指定文件的前多少个块,seek指定写入到of指定文件时忽略前多少个块。型颂罩
dd if=/dev/zero of=/tmp/abc.1 bs=1M count=20
if是input file,of是output file;bs有c(1byte)、w(2bytes)、b(512bytes)、kB(1000bytes)、K(1024bytes)、MB(1000)、M(1024)和GB、G等几种单位。因此,不要随意在单位后加上字母B。
假设现有文件CentOS.iso的大小1.3G,需要将其切分后还原,切分的第一个小文件大小为500M。
dd if=/tmp/CentOS.iso of=/tmp/CentOS1.iso bs=2M count=250
生成第二个小文件,由于第二个小文件不知道具体大小,所以不指定count选项。由于第二个小文件要从第500M处开始切分,于是需要忽略CentOS.iso的前500M。假设bs=2M,于是skip掉的数据块数量为250。
dd if=/tmp/CentOS.iso of=/tmp/CentOS2.iso bs=2M skip=250
现在CentOS.iso=CentOS1.iso+CentOS2.iso。可以将CentOS[1-2].iso还原。
cat CentOS1.iso CentOS2.iso >CentOS_m.iso
比较CentOS_m.iso和CentOS.iso的md5值,它们是完全一样的。
shell> md5sum CentOS_m.iso CentOS.iso
CentOS_m.iso
CentOS.iso
那么seek选项呢?和skip有什么区别?skip选项是忽略读取时的前N个数据块,而seek是忽略写入文件的前N个数据块。假如要写入的文件为a.log,则seek=2时,将从a.log的第3个数据块开始追加数据,如果a.log文件本身大小就不足2个数据块,则缺少的部分自动使用/dev/zero填充。
于是,在有了CentOS1.iso的基础上,要将其还原为和CentOS.iso相同的文件,可以使用下面的方法:
dd if=/tmp/CentOS.iso of=/tmp/CentOS1.iso bs=2M skip=250 seek=250
还原后,它们的md5值也是相同的。
shell>md5sum CentOS1.iso CentOS.iso
CentOS1.iso
CentOS.iso
1.2 split命令
split工具的功能是将文件切分为多个小文件。既然要生樱漏成多个小文件,必然要指定切分文件的单位,支持按行切分以及按文件大小切分,另外还需解决小文件命名的问题。例如,文件名前缀、后缀。如果未明确指定前缀,则默认的前缀为"x"。
以下是命令的语法说明:
例如,将/etc/fstab按行切分,每5行切分一次,并指定小文件的前缀为"fs_",后缀为数值后缀,且后缀长度为2。
[root@linuxidc ~]# split -l 5 -d -a 2 /etc/fstab fs_
[root@linuxidc~]# lsfs_00 fs_01 fs_02
查看任一小文件。
[root@linuxidc ~]# catfs_01
# Accessible filesystems, by reference, are maintained under'/dev/disk'# Seeman pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info#
UUID=b2a70faf-aea4-4d8e-8be8-c7109ac9c8b8 / xfs defaults 0 0UUID=367d6a77-033b-4037-bbcb-416705ead095 /boot xfs defaults 0 0
可以将这些切分后的小文件重新组装还原。例如,将上面的三个小文件还原为~/fstab.bak。
[root@linuxidc ~]# cat fs_0[0-2] >~/fstab.bak
还原后,它们的内容是完全一致的。可以使用md5sum比较。
[root@linuxidc ~]# md5sum /etc/fstab ~/fstab.bak
/etc/fstab
/root/fstab.bak
还可以将标准输入的数据进行切分,并分别写入到小文件中。例如:
[root@linuxidc ~]# seq 1 2 15 | split -l 3 -d -new_
[root@linuxidc~]# ls new*new_00 new_01 new_02
可以为每个小文件追加额外的后缀。有些老版本的split不支持该选项,而是在csplit上支持的,但是新版本的split已经支持。例如,加上".log"。
[root@linuxidc ~]# seq 1 2 20 | split -l 3 -d -a 3 --additional-suffix=".log" -new1_
[root@linuxidc~]# ls new1*new1_000.log new1_001.log new1_002.log new1_003.log
1.3 csplit命令
split只能按行或按照大小进行切分,无法按段落切分。csplit是split的变体,功能更多,它主要是按指定上下文按段落分割文件。
csplit [OPTION]... FILE PATTERN...
描述:按照PATTERN将文件切分为"xx00","xx01", ...,并在标准输出中输出每个小文件的字节数。
选项说明:-b FORMAT:指定文件后缀格式,格式为printf的格式,默认为%02d。表示后缀以2位数值,且不足处以0填充。-f PREFIX:指定前缀,不指定是默认为"xx"。-k:用于突发情况。表示即使发生了错误,也不删除已经分割完成的小文件。-m:明确禁止文件的行去匹配PATTERN。-s:(silent)不打印小文件的文件大小。-z:如果切分后的小文件中有空文件,则删除它们。
FILE:待切分的文件,如果要切分标准输入数据,则使用"-"。
PATTERNs:
INTEGER :数值,假如为N,表示拷贝1到N-1行的内容到一个小文件中,其余内容到另一个小文件中。/REGEXP/[OFFSET]:从匹配到的行开始按照偏移量拷贝指定行数的内容到小文件中。
:其中OFFSET的格式为"+N"或"-N",表示向后和向前拷贝N行%REGEXP%[OFFSET]:匹配到的行被忽略。
{INTEGER} :假如值为N,表示重复N此前一个模式匹配。
{*} :表示一直匹配到文件结尾才停止匹配。
假设文件内容如下:
[root@linuxidc ~]# cattest.txt
SERVER-1[connection]192.168.0.1success
[connection]192.168.0.2failed
[disconnect]192.168.0.3pending
[connection]192.168.0.4success
SERVER-2[connection]192.168.0.1failed
[connection]192.168.0.2failed
[disconnect]192.168.0.3success
[CONNECTION]192.168.0.4pending
SERVER-3[connection]192.168.0.1pending
[connection]192.168.0.2pending
[disconnect]192.168.0.3pending
[connection]192.168.0.4 failed
假设每个SERVER-n表示一个段落,于是要按照段落切分该文件,使用以下语句:
[root@linuxidc ~]# csplit -f test_ -b %04d.log test.txt /SERVER/ {*}0
140
139
140
"-f test_" 指定小文件前缀为"test_", "-b %04d.log" 指定文件后缀格式"00xx.log",它自动为每个小文件追加额外的后缀".log", "/SERVER/" 表示匹配的模式,每匹配到一次,就生成一个小文件,且匹配到的行是该小文件中的内容, "{*}" 表示无限匹配前一个模式即/SERVER/直到文件结尾,假如不知道{*}或指定为{1},将匹配一次成功后就不再匹配。
[root@linuxidc ~]# ls test_*test_0000.log test_0001.log test_0002.log test_0003.log
上面的文件中虽然只有三个段落:SERVER-1,SERVER-2,SERVER-3,但切分的结果生成了4个小文件,并且注意到第一个小文件大小为0字节。为什么会如此?因为在模式匹配的时候,每匹配到一行,这一行就作为下一个小文件的起始行。由于此文件第一行"SERVER-1"就被/SERVER/匹配到了,因此这一行是作为下一个小文件的内容,在此小文件之前还自动生成一个空文件。
生成的空文件可以使用"-z"选项来删除。
[root@linuxidc ~]# csplit -f test1_ -z -b %04d.log test.txt /SERVER/ {*}140
139
140
还可以指定只拷贝匹配到的行偏移数量。例如,匹配到行时,只拷贝它后面的1行(包括它自身共两行),但多余的行将放入下一个小文件中。
[root@linuxidc ~]# csplit -f test2_ -z -b %04d.log test.txt /SERVER/+2 {*}42
139
140
98
第一个小文件只有两行。
[root@linuxidc ~]# cattest2_0000.log
SERVER-1[connection]192.168.0.1 success
SERVER-1段落的其余内容放入到了第二个小文件中。
[root@linuxidc ~]# cattest2_0001.log
[connection]192.168.0.2failed
[disconnect]192.168.0.3pending
[connection]192.168.0.4success
SERVER-2[connection]192.168.0.1 failed
同理第三个小文件也一样,直到最后一个小文件中存放剩余所有无法匹配的内容。
[root@linuxidc ~]# cattest2_0003.log
[connection]192.168.0.2pending
[disconnect]192.168.0.3pending
[connection]192.168.0.4 failed
指定"-s"或"-q"选项以静默模式运行,将不会输出小文件的大小信息。
[root@linuxidc ~]# csplit -q -f test3_ -z -b %04d.log test.txt /SERVER/+2 {*}

㈢ linux split拆分文件

http://c.biancheng.net/linux/split.html

15 分钟之后,我要去朋友家聚会。我打算从我的台式机上把一部 700MB 大小的美国大片拷贝出来,带到朋友家去看,可是我的两个优盘都只有 512MB,这让我如何是好?

别急,用 10 分钟赶快来认识一下我们的 split 拆分小能手,一切问题将迎刃而解。当遇到大文件而苦不堪言的时候,split 就会像天使一样解救我们弊友于水火之中。
合久必分
闲言少叙,我们现在就来介绍拆分的方法。先使用 dd 命令来生成一个 700MB 文件来作为我们的拆分对象:

美国大片的文件大小是 700MB,而我手边仅有的两个优盘,都是 512MB 大小的。我打算把文件以 400MB 作为一个拆分单位,来进行拆分。这里使用到了 split 的-b选项,来指定每个拆分文件的大小:

看!分身完毕!咦,怎么多出了 xaa 和 xab 两个文件,这么奇怪的名字?

是的,你没看错,在没有明确指定拆分后文件的命名方式的情况下,split 会默认采用 x 字符作为文件前缀,采用类似 aa、ab、ac 的字符串依次作为文件后缀。于是,就出现了我们上面看到的 xaa、xab 了。

从文件大小来看,如我们所愿,电影文件的确被切割成了一个 400MB 的文件、一个 300MB 的文件,终于可以装到两个优盘里了。
知其然,知其所以然
知道了拆分命令后,我们来一起学习一下 split 的命令格式和常用选项。

split 的作用很好描述,就是将文件按照一定规则进行拆分。一般情况下,我们可以按照文件大小来进行拆分,如果是文本文件的话,还可以按照行数来进行拆分,默认是 1000 行作为一个拆分单位。

默认情况下,分割后的文件的名称会以 x 作为前缀,以 aa、ab、亮羡ac 这样的双字母格式作为后缀,形成 xaa、xab 这样的名称格式。

我们来一起看看 split 的命令格式:
split [-b ][-C ][-][-l ][要切割的文件][输出文件名前缀][-a ]

最常用的选项,都在这里了:
-b<字节>:指定按多少字节进行拆分,也可以指定 K、M、G、T 等单位。
-<行数>或-l<行数>:指定每多少行要拆分成一个文件。
输出文件名前缀:设置拆分后的文件的名称前缀,split 会自动在前缀后加上编号,默认从 aa 开始。
-a<后缀长度>:默认的后缀长度是 2,也就是按 aa、ab、ac 这样的格式依次编号。
分久必合
完成了美国大片的拆分,我赶赴朋友家,打开他的电脑,优盘插上,使用 cat 命令将拆分文件 xaa 和 xab 合并成一个文件,可以看出合并后的文件和源文件的大小是一致的:

对了,如果是在 Windows 下的话,我们要先运行 cmd,然后用 命令来进行文件的合并:
/b xaa + xab king_of_ring.avi

格式上和 Linux 有些区别,但原理是一样的。
设置拆分文件的名称前缀
上面例子中,我们没有指定拆分文件的名称前缀,结果拆分后的文件名都是敬卜拍 aa、ab 这样的名称,这样的名称既不达意也不美观。

下面的例子,我们尝试以 king_of_ring_part_ 作为拆分后文件的名称前缀:

[root@roclinux ~]$ split -b 400m king_of_ring.avi king_of_ring_part_

文件名的可读性是不是提高了不少,从文件名称就可以看出来是美国大片的拆分文件啦。
设置数字后缀
如果大家看不惯以 aa、ab 这种字母作为文件后缀,我们还可以通过-d选项来指定数字形式的文件后缀:

[root@roclinux ~]$ split -b 400m -d king_of_ring.avi king_of_ring_part_

对于中国人来说,数字形式的后缀,增加了文件名称的可读性。
按照行数进行拆分
前面我们讲的是按照文件大小(如 400MB)进行文件拆分的方法,但是并非所有情况都适合于用文件大小作为拆分单元。比如,我们希望把 /etc/passwd 文件按照一个文件 10 行记录的方式进行拆分,又该怎么操作呢?

[root@roclinux ~]$ split -d -10 /etc/passwd my_passwd_

合并后的校验不可少
需要注意的是,在通过网络来传输大文件,或者在设备之间复制大文件的时候,可能会出现传输前后数据不一致的情况。

使用 split 来拆分大文件仅仅是故事的开始,操作完毕后化零为整、完璧归赵才是完美的结局。因此需要在合并文件后进行文件的完整性校验,推荐使用 md5sum 来计算和比对前后两个大文件的 md5 值。

如果前后一致,那么恭喜你,文件合并成功!

好了,split 学完了,我们也可以和朋友一起欣赏惊险刺激的美国大片了!

㈣ linux文件拆分命令

Linux中分割文件用split命令,这个命令可以将一个文件分割成指定大小的多个文件,split命令的用法是:
split -b 分割的大小 需要分割的文件名 分割后文件的前导文字
这里解释一下,-b参数表示按照文件大小单位来进行分割(split命令还有一个-l参数,是根据文本文件的行数来进行分割,这个-b参数是根据大小来分割的),-b参数后面跟的是分割的依据——文件大小,文件大小的单位可以是b、k、m,比如300m。“分割后文件的前导文字”是干嘛的呢,其实是在分割后的文件名前面加上一个前缀。下面是一个例子,就假设需要分割的文件是/root/bigfile:
split -b 50m /root/bigfile chunk
这条命令产生的分割文件可能是:chunkaa、chunkab、chunkac,看到前导文字的作用了吧。
那么如何将分割后的文件再合并起来呢,还是接着上面的那个例子,用下面这条命令就可以了(先用cd /root切换到/root目录):
cat chunk* >> bigfile

㈤ linux 如何将一个大文件分成几个小文件

1、连接上相应的linux主机,进入到等待输入shell指令的linux命令行状态下。

㈥ linux中怎么将文件合并

方法一:使用cat命令从文件中读入两个文件,然后将重定向到一个新的文件。这种方法可以一次性合并任意多个文件。

用法示例:

将file1.txt和file2.txt合并到file.txt

$ cat file1.txt file2.txt > file.txt

方法二:只使用cat命令读入一个文件,然后使用>>将文本流追加到另一个文件的末位。

用法示例:

将file1.txt追加到file2.txt的末尾

$ cat file1.txt >> file2.txt

(6)linux大文件切割扩展阅读:

反之分割文件

linux下文件分割可以通过split命令来实现,可以指定按行数分割和安大小分割两种模式。Linux下文件合并可以通过cat命令来实现,非常简单。

1、在Linux下用split进行文件分割:

模式一:指定分割后文件行数

对与txt文本文件,可以通过指定分割后文件的行数来进行文件分割。

命令:split-l300large_file.txtnew_file_prefix

模式二:指定分割后文件大小

split-b10mserver.logwaynelog

对二进制文件我们同样也可以按文件大小来分隔。

2、将一个大文件分成若干个小文件方法

例如将一个BLM.txt文件分成前缀为 BLM_ 的1000个小文件,后缀为系数形式,且后缀为4位数字形式

先利用wc -l BLM.txt

读出 BLM.txt 文件一共有多少行

再利用 split 命令

split -l 2482 ../BLM/BLM.txt -d -a 4 BLM_

将文件 BLM.txt 分成若干个小文件,每个文件2482行(-l 2482),文件前缀为BLM_ ,系数不是字母而是数字(-d),后缀系数为四位数(-a 4)

㈦ 「方法」Linux下将文件打包、压缩并分割成指定大小

https://blog.csdn.net/whu_zhangmin/article/details/45870077

tar -zcvf cm-11.tar.gz cm-11
//将cm-11文件夹压缩成cm-11.tar.gz

split -b 4000M -d -a 1 cm-11.tar.gz cm-11.tar.gz.
//使用split命令,-b 4000M 表示设置每个分割包的大小,单位还是可以k
// -d "参数指定生成的分割包后缀为数字的形式
//-a x来设定序列的长度(默认值是2),这里设定序列的长度为1
执行命令后,生成压缩包如下:

tar -zcvf cm-11.tar.gz cm-11 | split -b 4000M -d -a 1 - cm-11.tar.gz.
//采用管道,其中 - 参数表示将所创建的文件输出到标准输出上

tar -zxvf cm-11.tar.gz

cat cm-11.tar.gz.* | tar -zxv

tar可以用来压缩打包单文件、多个文件、单个目录、多个目录。
Linux打包命令 tar
tar命令可以用来压缩打包单文件、多个文件、单个目录、多个目录。
常用格式:
单个文件压缩打包 tar -czvf my.tar.gz file1
多个文件压缩打包 tar -czvf my.tar.gz file1 file2,...(file )(也可以给file 文件mv 目录在压缩)
单个目录压缩打包 tar -czvf my.tar.gz dir1
多个目录压缩打包 tar -czvf my.tar.gz dir1 dir2
解包至当前目录:tar -xzvf my.tar.gz
cpio
含子目录find x* | cpio -o > /y/z.cpio
不含子目录ls x* | cpio -o > /y/z.cpio
解包: cpio -i < /y/z.cpio
[root@linux ~]# tar [-cxtzjvfpPN] 文件与目录 ....
参数:
-c :建立一个压缩文件的参数指令(create 的意思);
-x :解开一个压缩文件的参数指令!
-t :查看 tarfile 里面的文件!
特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!
因为不可能同时压缩与解压缩。
-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
例如使用『 tar -zcvfP tfile sfile』就是错误的写法,要写成
『 tar -zcvPf tfile sfile』才对喔!
-p :使用原文件的原来属性(属性不会依据使用者而变)
-P :可以使用绝对路径来压缩!
-N :比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中!
--exclude FILE:在压缩的过程中,不要将 FILE 打包!

㈧ linux大文件的拆分 合并 压缩 解压缩

1.分割 -- split命令

可宴友以指定按行数分割和按字节大小分割两种模式。

(1) 按行数分割

加上-d,使用数字后缀;加上--verbose,显示分割进度:

(2) 按字节大小分族祥渗割

2.合并兆脊 -- cat命令

3 . 文件压缩成 tar.gz

4 . 解压缩 tar.gz文件

阅读全文

与linux大文件切割相关的资料

热点内容
华为手机app应用数据哪些删除 浏览:765
数据库有哪些表格 浏览:741
bada12微信java 浏览:16
小白编程什么最好学 浏览:205
qq回头看头像 浏览:338
苹果换屏要多长时间 浏览:283
如何用平板电脑学编程 浏览:424
格式工厂怎么转换swf文件 浏览:817
怎么做一个试用网站 浏览:953
哪里有信息不对称的app 浏览:59
win10的gpeditmsc文件 浏览:451
4399游戏盒20版本 浏览:349
有什么找工作比较靠谱的app吗 浏览:921
如何给网站挂黑链 浏览:282
360断网急救箱网络异常修复不了 浏览:889
身份证验证的js文件 浏览:994
什么人经常换微信名字 浏览:707
网站源码挖掘 浏览:944
荔枝fm和app哪个播放量好 浏览:535
乐秀音频在哪个文件里 浏览:486

友情链接