我有被全部整理gzip压缩文件的目录。我不知道目录中有多少个文件。我想将这些文件合并到一个文件中。我已经绕了这样的: find . -type f | xargs zcat | sort
然而,当我加入-m
标志,它只是串接的文件一个又一个。有没有办法使用sort -m
合并目录中的所有排序文件?合并排序的文件不知道文件名
谢谢!
我想指出,@ chepner的解决方案完全适用于非压缩文件。
我有被全部整理gzip压缩文件的目录。我不知道目录中有多少个文件。我想将这些文件合并到一个文件中。我已经绕了这样的: find . -type f | xargs zcat | sort
然而,当我加入-m
标志,它只是串接的文件一个又一个。有没有办法使用sort -m
合并目录中的所有排序文件?合并排序的文件不知道文件名
谢谢!
我想指出,@ chepner的解决方案完全适用于非压缩文件。
我已经找到了答案!
find . -type f | awk '{print "<(gzip -cd "$0")"}' | tr "\n" " " | (echo -n sort -m " "; cat -; echo) | bash
此查找目录中的所有文件,并将它们作为参数传递给sort命令,一路上空间替换换行符。感谢大家帮助我们到达这里!
要合并预排序的文件,你需要作为参数提供的名称,而不是数据作为标准输入。假设你没有是许多文件,只是使用
sort -m *
虽然文件是'gzip'd。它可能需要构建或评估一些流程替代。 –
是的,那是我问题的根源。 –
您可以将两个gzip文件连接在一起,以制作一个更长的gzip文件。如果你实际上不需要*排序*,那么'cat log * .gz> bigfile.gz'就好了。 – ghoti
的'sort'命令不能采取压缩文件作为输入。 –
'sort -m'不排序;它*仅*合并其预先排序的输入文件。当您从标准输入读取时,您只有*一个*输入文件。在这种情况下,你根本不需要'-m'。 – chepner
我想简单地合并这些文件,因为我知道它们都是已排序的,可能吗? –