尝试对管道命令的结果进行 cat

尝试对管道命令的结果进行 cat

我有一个名为 list20140801.txt list20140802.txt 的文件夹...

我正在尝试这样做

ls | sort | tail -3 | cat

但它只给我文件名,而不是对它们进行分类。

答案1

根据cat手册,cat 的工作是:

将文件 (FILE) 或标准输入连接到标准输出。

没有理由cat将其标准输入视为文件名。你需要的是

ls | 排序 | tail -3 | xargs cat

反而。

查看xargs手册页以获取更多信息:http://linux.about.com/library/cmd/blcmdl1_xargs.htm

答案2

的输出已经按照与默认排序ls相同的方式默认排序,因此不需要。sortsort

将生成的文件列表传递给命令的最常见方法是使用xargsxargs有关详细信息,请参阅手册页,但在这种情况下您不需要任何选项。(xargs如果您有大量文件,可能无法执行您想要的操作,但在大多数情况下,它无需您考虑这一点即可正常工作。)

tail目前许多 Linux 系统上使用的 版本不接受 just-3作为选项。它要求您使用-n3

最后,cat管道末端没有做任何有用的事情,因此也可以省略。

此命令应该可以执行您想要的操作。

ls | xargs tail -n3

更新

我刚刚读了@AtomicHeartFather的回答,意识到我可能把tail问题的部分放错了。在这种情况下,命令应该是

ls | tail -n3 | xargs cat

除 之外,这与 AtomicHeartFather 所写的非常相似sort

相关内容