LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2052|回复: 11

如何把一个比较大的文本文件分割成若干等大的小文件并按顺序命名??

[复制链接]
发表于 2005-9-6 18:40:19 | 显示全部楼层 |阅读模式
是写有dd的for循环好呢还是??

希望达人给出比较巧妙的解法.
发表于 2005-9-6 18:56:35 | 显示全部楼层
split不行吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-7 15:02:11 | 显示全部楼层
谢谢。。
不过split输出的文件名是纯字母的。能否直接用split的option改成001,002。。这样的编号?
虽说有规律的字母还是比较好用rename的。。
回复 支持 反对

使用道具 举报

发表于 2005-9-7 17:00:20 | 显示全部楼层
Post by Brain
谢谢。。
不过split输出的文件名是纯字母的。能否直接用split的option改成001,002。。这样的编号?
虽说有规律的字母还是比较好用rename的。。

split后再改名嘛~~
回复 支持 反对

使用道具 举报

发表于 2005-9-7 18:06:21 | 显示全部楼层
  1. SPLIT(1)                         User Commands                        SPLIT(1)

  2. NAME
  3.        split - split a file into pieces

  4. SYNOPSIS
  5.        split [OPTION] [INPUT [PREFIX]]

  6. DESCRIPTION
  7.        Output  fixed-size  pieces of INPUT to PREFIXaa, PREFIXab, ...; default
  8.        PREFIX is ‘x’.  With no INPUT, or when INPUT is -, read standard input.

  9.        Mandatory  arguments  to  long  options are mandatory for short options
  10.        too.

  11.        -a, --suffix-length=N
  12.               use suffixes of length N (default 2)
复制代码
回复 支持 反对

使用道具 举报

发表于 2005-9-8 16:41:01 | 显示全部楼层
cut 呵呵
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-8 18:49:29 | 显示全部楼层
感谢以上几位达人。。

问题解决。

实际上是ipod的问题
最近败回家一个ipod,想在上面看书,不过它的备忘录只允许4K的文本文件。因此就有以上的题目了。

win底下有个ipod agent工具,还需要.NET Framework。。一个字“烦”
回复 支持 反对

使用道具 举报

发表于 2005-9-8 20:06:51 | 显示全部楼层
split -d -a=3
回复 支持 反对

使用道具 举报

发表于 2005-9-9 12:25:04 | 显示全部楼层
csplit -k -f dgckfhz 10160101.370856000.1231 15000 {99}
此命令  将把文件 10160101.370856000.1231   分解为  大小为  15000  行  文件名前半部分为   dgckfhz 后面为 00、01、02 ......99 文件个数不多于100个。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-26 10:40:54 | 显示全部楼层
结束一下。

split在对文件大小分割有要求时候相当有用。唯一的缺点是文件名的自动命名(只能写一小段for循环做改名)。
在比较早得版本里面是不支持-d选项,是我在2.4内核的RH EL 3上试验得结果
而2.6内核的EL4上有-d选项。

黯然老大是LFS版过来的,能不能帮忙找找在哪个版本的coreutils中改过的?

csplit好像只能控制行数。对文件大小没法控制。如果是需要分割连续的数据文件如多媒体文件可能就行不通了。

cut没有仔细研究用法。哪位达人补充下?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表