基础知识

功能:使用 shellsplit 可以将一个大文件分割成很多个小文件,有时文件太大处理起来不方便就需要使用到了。

在默认情况下将按照每1000行切割成一个小文件。

语法

split [-<行数>][-b][-c][-l] file.txt

参数说明

split [-bl] file [prefix] -a 5 -d
-b -- bytes=size 对file进行切分 每个小文件大小为size 可以指定单位b,k,m
-l -- lines=number 对file进行切分 每个文件都有number行
-a 5 后缀长度
-d 数字后缀
-c <字节> : 与参数"-b"相似,但是在切割时将尽量维持每行的完整性
prefix 分割后产生的文件名前缀

实例

实例一

使用指令 split 将文件 file.txt 每6行切割为一个文件,输入:

split -6 file.txt
-rw-r--r-- 1 root root 27 Nov 13 09:32 file.txt
-rw-r--r-- 1 root root 12 Nov 13 09:32 xaa
-rw-r--r-- 1 root root 15 Nov 13 09:32 xab

实例二

假设要切分的文件为 file.txt 大小为 109M 3192043行。

  1. 按行数切割
split -l 1000000 file.txt ## 按每个文件一百万行进行切割
-rw-r--r-- 1 root root 113209645 Sep 2 11:04 file.txt
-rw-r--r-- 1 root root 35466488 Sep 2 15:46 xaa
-rw-r--r-- 1 root root 35465970 Sep 2 15:46 xab
-rw-r--r-- 1 root root 35465632 Sep 2 15:46 xac
-rw-r--r-- 1 root root 6811555 Sep 2 15:46 xad

生成xaa、xab、xac、xad等4个文件。

  1. 按大小切割
split -b 20m file.txt ## 按每个文件20m的大小进行切割
-rw-r--r-- 1 root root 113209645 Sep 2 11:04 file.txt
-rw-r--r-- 1 root root 20971520 Sep 2 15:47 xaa
-rw-r--r-- 1 root root 20971520 Sep 2 15:47 xab
-rw-r--r-- 1 root root 20971520 Sep 2 15:47 xac
-rw-r--r-- 1 root root 20971520 Sep 2 15:47 xad
-rw-r--r-- 1 root root 20971520 Sep 2 15:47 xae
-rw-r--r-- 1 root root 8352045 Sep 2 15:47 xaf

生成多个文件,每个大小为20M。

  1. 添加前缀切割
split -b 50m file.txt example
-rw-r--r-- 1 root root 52428800 Sep 2 15:49 exampleaa
-rw-r--r-- 1 root root 52428800 Sep 2 15:49 exampleab
-rw-r--r-- 1 root root 8352045 Sep 2 15:49 exampleac
  1. 更改命名
split -l 1000000 file.txt -d -a 3 url_
-rw-r--r-- 1 root root 35466488 Sep 2 16:11 url_000
-rw-r--r-- 1 root root 35465970 Sep 2 16:11 url_001
-rw-r--r-- 1 root root 35465632 Sep 2 16:11 url_002
-rw-r--r-- 1 root root 6811555 Sep 2 16:11 url_003

说明:

  • -l 按行分割
  • -d 添加数字后缀
  • -a 3 表示用3位数来顺序命名 后缀长度
  • url_ 分割后文件的前缀
  1. 添加拓展名
split -l 4 file.txt -d -a 3 url_ && ls | grep url_ | xargs -n1 -i {} {}.txt

说明:

  • && 将2个命令连接起来一起执行
  • 查找url_开头的文件,逐个重命名为xxx.txt
  1. 使用 cat 命令合并数据
cat url_*.txt > url.txt

其他

dd命令

生成一个大小为100kb的测试文件:

dd if=/dev/zero bs=100k count=1 of=data.file
1+0 records in
1+0 records out
102400 bytes (102 kB) copied, 0.000258 seconds, 397 MB/s
# count=1指仅拷贝一个块
# bs=100k 指块大小为100k个字节

dd命令用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。

  • if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >
  • of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file >
  • ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。

    obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。

    bs=bytes:同时设置读入/输出的块大小为bytes个字节。
  • cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。
  • skip=blocks:从输入文件开头跳过blocks个块后再开始复制。
  • seek=blocks:从输出文件开头跳过blocks个块后再开始复制。

    注意:通常只用当输出文件是磁盘或磁带时才有效,即备份到磁盘或磁带时才有效。
  • count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。
  • conv=conversion:用指定的参数转换文件。

/dev/null和/dev/zero的区别

  • /dev/null,外号叫无底洞,你可以向它输出任何数据,它通吃,并且不会撑着!
  • /dev/zero,是一个输入设备,你可你用它来初始化文件。该设备无穷尽地提供0,可以使用任何你需要的数目——设备提供的要多的多。他可以用于向设备或文件写入字符串0。
  • /dev/null——它是空设备,也称为位桶(bit bucket)。任何写入它的输出都会被抛弃。如果不想让消息以标准输出显示或写入文件,那么可以将消息重定向到位桶。
  • 像/dev/null一样, /dev/zero也是一个伪文件, 但它实际上产生连续不断的null的流(二进制的零流,而不是ASCII型的)。 写入它的输出会丢失不见, 而从/dev/zero读出一连串的null也比较困难, 虽然这也能通过od或一个十六进制编辑器来做到。
  • /dev/zero主要的用处是用来创建一个指定长度用于初始化的空文件,就像临时交换文件。
  • 关于 /dev/zero 的另一个应用是为特定的目的而用零去填充一个指定大小的文件, 如挂载一个文件系统到环回设备 (loopback device)或"安全地" 删除一个文件。

参考链接1:Linux:split命令详解

参考链接2:linux命令总结dd命令详解

Linux学习笔记:split切分文件并按规律命名及添加拓展名的更多相关文章

  1. shell的split生成的文件按规律命名及添加扩展名

    可以参考 用shell切分文件--split shell下的split命令主要用于分割一些大文件用的,比如经常要用到将一个几十万行的TXT分割为多少行一个的文件,非常有用,唯一坑爹的是,切割后的文件不 ...

  2. linux 学习笔记 显示压缩文件 gong.zip 的文件内容

    #zip -v gong zip zip info: xxx >删除压缩文件中俄smart.txt 文件 #zip -d gong.zip smart.txt deleting:smart.tx ...

  3. Linux学习笔记之1——文件和目录管理(硬连接和软连接)(连结档,相当于快捷方式)

    在这节将要学习linux的连接档,在之前用"ls -l" 查看文件属性的命令时, 其中第二个属性是连接数.那么这个连接数是干什么的?这就要理解inode. 先说一下文件是怎么存储的 ...

  4. Linux学习笔记 -- 目录与文件的管理

    目录结构 Linux的目录结构为树状结构,最顶级的目录为根目录 “/”. 其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们. 在开始本教程前我们需要先知道什么是. 绝对路径与相对路径 绝 ...

  5. 【linux学习笔记四】文件搜索命令

    一 文件搜索 locate //在后台数据库中按文件名搜索 搜索速度更快 locate 文件名 //locate命令所搜索的后台数据库 /var/lib/mlocate //更新数据库 updated ...

  6. linux 学习笔记五 查看文件篇章

    1 diff -y  test.txt  test2.txt 输出源文件与目标文件的全部 分为左右两篮 如下 --------------------------------------------- ...

  7. 嵌入式Linux学习笔记之第二阶段---文件I/O

    1.文件IO的四个函数 一些术语: 不带缓冲的I/O: 每个read和write都调用内核中的一个系统调用. 文件描述符: 一个非负整数,对内核而言,所以打开的文件都通过文件描述符引用. ①打开或创建 ...

  8. Linux学习笔记(13)-进程通信|命名管道

    匿名管道只能在具有亲属关系的进程间通信,那么如果想要在不具有亲戚关系,想在陌生人之间通信,那又该怎么办呢? 别慌,Linux身为世界上*强大的操作系统,当然提供了这种机制,那便是命名管道-- 所谓命名 ...

  9. Linux学习笔记(7)CRT实现windows与linux的文件上传下载

    Linux学习笔记(7)CRT实现windows与linux的文件上传下载 按下Alt + p 进入SFTP模式,或者右击选项卡进入 命令介绍 help 显示该FTP提供所有的命令 lcd 改变本地上 ...

随机推荐

  1. iOS 越狱后OpenSSH安装报错

    转载自:https://www.jianshu.com/p/75f6d0f54d61 安装OpenSSH报错 尝试重启手机重新安装 将手机语言设置为英文状态 将手机设置为飞行模式,用wifi下载(我的 ...

  2. Java如何获取ResultSet结果中的每一列的数据类型

    示例代码片段: ResultSet resultSet = statement.executeQuery(sql); ResultSetMetaData metaData = resultSet.ge ...

  3. caffe dropout解读

    先上caffe dropout_layer.cpp源码,如下: // LayerSetUp DCHECK(threshold_ > 0.); DCHECK(threshold_ < 1.) ...

  4. Docker 镜像的内部结构(四)

    目录 一.base镜像 1.rootfs 2.base 镜像提供的是最小安装的 Linux 发行版. 3.支持运行多种 Linux OS 二.镜像的分层结构 可写的容器层 一.base镜像 base ...

  5. AWS 解决方案架构师考点(Storage)

    目录 一.S3 存储类 二.S3 考点 三.Storage Gateway 3.1.File Gateway 3.2.Volume Gateway /3.3.Tape Gateway 一.S3 存储类 ...

  6. 【miscellaneous】关于gst ffmpeg插件的安装心得

    1 一直通过软件源不能将ffmpeg插件进行安装 2 下载源码编译一直失败 说是需要依赖bad插件 3 bad插件安装不上在ubuntu下 解决办法: 应该直接查找ffmpeg插件的安装办法,不是只有 ...

  7. 最新 盛天网络java校招面经 (含整理过的面试题大全)

    从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.盛天网络等10家互联网公司的校招Offer,因为某些自身原因最终选择了盛天网络.6.7月主要是做系统复习.项目复盘.Leet ...

  8. controller中获取当前项目物理绝对路径

    用HttpServletRequest request获取 request.getSession().getServletContext().getRealPath(""); 上面 ...

  9. IdentityServer4 学习一

    网上找的关于IdentityServer4的百度脑图 http://naotu.baidu.com/file/75b251257ce27cfa62e0ad7f47b75576?token=e2db61 ...

  10. K8S从入门到放弃系列-(4)kubernetes集群之kubectl命令行工具部署

    摘要:随着版本的不断迭代,k8s为了集群安全,集群中趋向采用TLS+RBAC的安全配置方式,所以我们在部署过程中,所有组件都需要证书,并启用RBAC认证. 我们这里采用二进制安装,下载解压后,把对应组 ...