在不知道文件名的情况下合并已排序的文件

时间:2017-04-19 19:29:42

标签: linux bash sorting unix gzip

我有一个gzipped文件目录,这些文件都已排序。我不知道目录中有多少文件。我想将这些文件合并到一个文件中。我一直在这样做: find . -type f | xargs zcat | sort 但是,当我添加-m标志时,它只是一个接一个地连接文件。有没有办法使用sort -m合并目录中的所有已排序文件?

谢谢!

我想指出@chepner的解决方案非常适用于非压缩文件。

2 个答案:

答案 0 :(得分:3)

要合并预先排序的文件,您需要提供名称作为参数,而不是数据作为标准输入。假设您没有 许多文件,请使用

sort -m *

答案 1 :(得分:0)

我找到了答案!

find . -type f | awk '{print "<(gzip -cd "$0")"}' | tr "\n" " " | (echo -n sort -m " "; cat -; echo) | bash

这将查找目录中的所有文件,并将它们作为参数发送到sort命令,在此过程中用空格替换换行符。感谢大家帮忙来到这里!