【发布时间】:2012-11-11 10:53:57
【问题描述】:
我在 Linux 中有多个小文件(大约 70,000 个文件),我想在文件的每一行末尾添加一个单词,然后将它们全部合并到一个文件中。
我正在使用这个脚本:
for fn in *.sms.txt
do
sed 's/$/'$fn'/' $fn >> sms.txt
rm -f $fn
done
有没有更快的方法来做到这一点?
【问题讨论】:
-
是的,如果您可以编写一些 Java 或 C++ 代码,您可以并行化这些代码。
-
@MichaelAaronSafyan:你可能是对的,但有一次(大约一年前)我运行了一个复杂的
gsed过滤器,过滤了几百万个文件(总共 60 GB),将它们从类似 xml 的格式到类似 json 的格式(虽然不完全,但重要的是它比这个问题需要的复杂得多),大约需要 2 个小时才能完成。诚然,它是一台配备 15000 RPM HDD 的 8 核机器,但仍然比我希望的快得离谱。 (注意我说的是gsed,而不是sed。OS X 的sed慢了两个数量级以上)。 -
显然,我上面的评论假设您不需要多次运行此查询(即,这就像在将数据提供给数据库进行存储或挖掘之前“清理”数据)。