文件的切分split和合并cat

大纲

1、文件的切分和合并工具

2、文件的切分:split

3、语法格式

4、split实战演练

5、合并:cat

6、文件完整性校验

1、文件的切分和合并工具

有时候我们可能遇见这种情况,有时文件比较大,想上传到服务器上,但由于服务器管理员为了安全考虑,把上传空间作了限制,比如只能上传20M的文件,如果我们文件的体积在100M的,有时就是压缩也不能满足服务器上传的限制。这时我们就要考虑切分文件了,把100M的文件,切分成若干份,然后传到服务器上。切分后的每个文件都是原文件的组成部份。如果要获得整个完整的文件,我们就需要文件的结合工具。

2、文件的切分:split

split - split a file into pieces。split 是把一个文件拆分为长度或体积相等的若干文件的工具。

3、语法格式

[[email protected] ~]# split --help
Usage: split [OPTION] [INPUT [PREFIX]]
Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default
size is 1000 lines, and default PREFIX is `x‘.  With no INPUT, or when INPUT
is -, read standard input.

Mandatory arguments to long options are mandatory for short options too.
  -a, --suffix-length=N   use suffixes of length N (default 2)
  -b, --bytes=SIZE        put SIZE bytes per output file
  -C, --line-bytes=SIZE   put at most SIZE bytes of lines per output file
  -d, --numeric-suffixes  use numeric suffixes instead of alphabetic
  -l, --lines=NUMBER      put NUMBER lines per output file
      --verbose           print a diagnostic to standard error just
                            before each output file is opened
                            
SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.

-l,指定每多少行切割一次,用于文本文件分割

-b 指定切割文件大小,单位m或k

-C 与-b类似,但尽量维持每行完整性

文件切割模式分为两种:

  • 对文本文件进行切分
  • 对二进制文件进行切分

4、split实战演练

示例1

将a.tar.gz按每个5M大小进行切割:(二进制模式)

[[email protected] tmp]# ls -lh
total 17M
-rw-r--r-- 1 root root 17M Jun 20 22:15 a.tar.gz
[[email protected] tmp]# split -b5m a.tar.gz mysplit-
[[email protected] tmp]# ls -lh
total 33M
-rw-r--r-- 1 root root  17M Jun 20 22:15 a.tar.gz
-rw-r--r-- 1 root root 5.0M Jun 20 22:17 mysplit-aa
-rw-r--r-- 1 root root 5.0M Jun 20 22:17 mysplit-ab
-rw-r--r-- 1 root root 5.0M Jun 20 22:17 mysplit-ac
-rw-r--r-- 1 root root 1.2M Jun 20 22:17 mysplit-ad

我们指定outfile的文件名为:"mysplit-",如果不指定那么默认以xaa, xbb.. 命名。

示例2

按行数对文本文件myfile.txt进行切分:(文本模式)

[[email protected] tmp]# cat myfile.txt
1
2
3
4
5
6
[[email protected] tmp]# split -l2 myfile.txt myfile-
[[email protected] tmp]# ls -l
total 16584
-rw-r--r-- 1 root root 16919415 Jun 20 22:15 a.tar.gz
-rw-r--r-- 1 root root        4 Jun 20 22:25 myfile-aa
-rw-r--r-- 1 root root        4 Jun 20 22:25 myfile-ab
-rw-r--r-- 1 root root        4 Jun 20 22:25 myfile-ac
-rw-r--r-- 1 root root       12 Jun 20 22:25 myfile.txt

[[email protected] tmp]# head myfile-a*
==> myfile-aa <==
1
2
==> myfile-ab <==
3
4
==> myfile-ac <==
5
6

我们可以看到,每个文件都只有2行哦,注意-l仅能对文本文件(ASCII)进行操作。

我们已经把大文件切割为多个小文件,那么我们如何把它们合并还原呢?请看:

5、合并:cat

cat是常用的文件查看命令,利用cat命令可以把多个文本文件合并为单个文件。

# 将几个文件合并为一个文件
# cat file1 file2 file3 > file

那么,示例2中将分割文件合并,可以使用:

[[email protected] tmp]# cat myfile-* > file   
[[email protected] tmp]# cat file
1
2
3
4
5
6

OK, 还原完成。那么对于文本文件可以使用cat命令,那么对于切割的二进制文件呢?

答案是肯定的,同样可以使用cat来完成。

所以,针对示例1,可以使用:

[[email protected] tmp]# cat mysplit-* > my.tar.gz

6、文件完整性校验

我们把一个大的文件分拆为多个小文件时,肯定会考虑到,我们重新把一个一个小的分拆文件连接起来,会不会能和原文件保持一致 。这样的疑问其实也是有道理的,因为这关系到一个文件的完整性。那么验证文件是否完整呢,这时就涉及到文件的校验工具。一般我们是通过MD5工具来校验对比。在Linux也有这样的工具,叫做md5sum。它的作用原理主要是根据原始文件的内容进行计算,然后给出一个校验码,当原始文件在网络传输出错,或被修改,那么再次对其进行md5校验,将产生的校验码和原始产生的校验码比对,如果相同则是一致的,反之说明不一致。

[[email protected] tmp]# md5sum a.tar.gz
e760656f7cf2f05158f73da75e8b720b  a.tar.gz
[[email protected] tmp]# md5sum my.tar.gz
e760656f7cf2f05158f73da75e8b720b  my.tar.gz

OK, 事实也证明合并后的文件是完整的。

文件的切分split和合并cat,布布扣,bubuko.com

时间: 2024-10-31 23:47:44

文件的切分split和合并cat的相关文章

Linux大文件分割split和合并cat使用方法

本文主要介绍linux下两个命令:split和cat.其中,相信大家都熟悉cat命令,一般用来查看一个文件的内容,但是它还其它的功能,比如这里要介绍的文件合并功能,它可把多个文件内容合并到一个文件中.从split词义不拿理解,其为分割之意,常用于分割大文件.下面详细介绍. split命令 — 分割文件 语法:split [–help][–version][-][-l][-b][-C][-d][-a][要切割的文件][输出文件名] –version 显示版本信息 – 或者-l,指定每多少行切割一次

进行大文件的分片操作(split),合并(cat/copy)

进行大文件的分片操作(split),合并(cat/copy) 由于工作的需要,当我们的系统产生了超过内存的日志文件时,当我们使用工具对文件进行读取数据时,会直接报异常,无法进行读取.所以我们要前置的对文件进行分片操作.split(linux命令)在windows中最好前置下载个cmder进行操作. 进入cmder,切换到需要分割的文件地址 可以看到这个文件有1.8g;这个文件如果要直接使用文件打开的话,直接就会报错. 使用split 命令,按照每个文件51200kb的大小进行解析,默认前缀为"w

大文件传输技巧-----split切割

报错:传输6G压缩包报错,xshell文件传输上限是4G 解决办法:将大文件切割成小文件传输出来,再合并 Linux tar打包和split分割 压缩命令主要用到tar打包和split分割,命令如下: tar czf - aaa | split -b 1024m - bbb.tar.gz_ aaa可以是文件也可以是目录, 大小可以是b(B).k(K).m(M)这3个单位. 解压是: cat xxx.tar.gz_* | tar zvxf - 也可以先把包合起来再解压: cat xxx.tar.g

将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件

原文地址:将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件 需求如下:编写一个程序 将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中 a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔. 废话不多说,直接上代码: package javase.arithmetic;   import com.google.common.base.Charsets; import com.google.common.base.Joiner;

压缩文件 .zip.001 .zip.002合并

可以把名字特别长的命名为1  这样简单些 copy /B 1.zip.001+1.zip.002 1.zip 压缩文件 .zip.001 .zip.002合并

Linux下的文件分割命令split

用法:split [选项]... [输入 [前缀]] 将输入内容拆分为固定大小的分片并输出到"前缀aa"."前缀ab",...: 默认以 1000 行为拆分单位,默认前缀为"x".如果不指定文件,或 者文件为"-",则从标准输入读取数据. 长选项必须使用的参数对于短选项时也是必需使用的.   -a, --suffix-length=N    指定后缀长度为N (默认为2)   -b, --bytes=大小        指定每

用java实现大文件分割、排序、合并

import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.Collections; import java.util.Iterator; import java

ThinkPHP配置数据库连接公共文件与项目个性化配置合并

因为整个网站的所有应用(项目)都需要进行数据库连接,如果在每个项目的配置文件里都要单独设置.以后如果数据库连接信息修改了的话,得一个一个去修改配置文件,这样很不适合懒人.因为近墨者注意到ThinkPHP的项目配置文件是数组形式的,我们可以通过合并数组的方式来解决这一问题.首先在网站根目录新建一名为config.inc.php的文件,把数据库配置参数写入数组 <?php return array( 'DB_TYPE'=>'mysql', 'DB_HOST'=>'localhost', 'D

读取文件夹下所有子文件夹中的excel文件,并根据分类合并

解决的问题:需要读取某个大文件夹下所有子文件夹中的excel文件,并汇总,汇总文件中需要包含的2部分的信息:1.该条数据来源于哪个子文件夹:2.该条数据来源于哪个excel文件.最终,按照子文件夹单独保存汇总文件,或者只保存成一个汇总文件. 场景描述:抓取了各个APP的使用数据,分散地保存在各个文件夹中.文件格式如下: 第一级分类:文件夹名 第二级分类:文件夹下xlsx文件名 第三级分类:每个xlsx文件中每行(具体的每条数据),但其中并没有该APP属于的二级分类和一级分类,需要为每条数据添加二