Chinaunix

标题: 如何提高cat的效率 [打印本页]

作者: wangcaipapa    时间: 2006-01-02 04:49
标题: 如何提高cat的效率
假设我有一堆比较大的数据文件,
data1.dat
data2.dat
data3.dat
....
dataN.dat

我想把他们用cat连接成为一个文件.

我可以: cat data?.dat >> all.dat

也可以:
for i in `ls data?.dat`; do
  cat $i >> all.dat
done

问题1. 这两个方式等价吗?
后者应该是sequential的吧? 那末前者是如何执行的?

2. 大家有更快一点的方案吗

请赐教.谢谢
作者: shinelian    时间: 2006-01-02 12:50
NAME
       cat - concatenate files and print on the standard output

SYNOPSIS
       cat [OPTION] [FILE]...

DESCRIPTION
       Concatenate FILE(s), or standard input, to standard output.
作者: 大蚂蚁    时间: 2006-01-02 13:13
方法2应该好点吧?比较实用,如果你的系统不是特别差劲,应该不用管那么多效率问题吧
方法1如果/tmp过小也许会丢失部分文件(猜测)
作者: 寂寞烈火    时间: 2006-01-02 13:20
原帖由 大蚂蚁 于 2006-1-2 13:13 发表
方法2应该好点吧?比较实用,如果你的系统不是特别差劲,应该不用管那么多效率问题吧
方法1如果/tmp过小也许会丢失部分文件(猜测)

cat就是cat,没必要把问题复杂化
我记得小骆驼书里有段讲了for和while的区别,从效率上上说,for不如while
BTW:小骆驼书 I/O基础 第111页有讲

[ 本帖最后由 寂寞烈火 于 2006-1-2 13:33 编辑 ]
作者: waker    时间: 2006-01-02 13:24
data?
才能匹配多少个文件啊,还for个P啊
还比较个P啊?
作者: wangcaipapa    时间: 2006-01-03 03:03
标题: 谢谢回复。
谢谢回复。

不过好像还是没有答案。

BTW。 data? 只是一个例子, data*更好了

有时候数据很大, 我认为还是有必要考虑一下效率问题的。

thank you guys, anyway.
作者: waker    时间: 2006-01-03 08:18
在循环中 all.dat在每次循环时都被打开/关闭一次,你说哪个效率高?当然文件名过多造成命令出错是另一码事




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2