![尝试对管道命令的结果进行 cat](https://linux22.com/image/1419124/%E5%B0%9D%E8%AF%95%E5%AF%B9%E7%AE%A1%E9%81%93%E5%91%BD%E4%BB%A4%E7%9A%84%E7%BB%93%E6%9E%9C%E8%BF%9B%E8%A1%8C%20cat.png)
我有一个名为 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
相同的方式默认排序,因此不需要。sort
sort
将生成的文件列表传递给命令的最常见方法是使用xargs
。xargs
有关详细信息,请参阅手册页,但在这种情况下您不需要任何选项。(xargs
如果您有大量文件,可能无法执行您想要的操作,但在大多数情况下,它无需您考虑这一点即可正常工作。)
tail
目前许多 Linux 系统上使用的 版本不接受 just-3
作为选项。它要求您使用-n3
。
最后,cat
管道末端没有做任何有用的事情,因此也可以省略。
此命令应该可以执行您想要的操作。
ls | xargs tail -n3
更新
我刚刚读了@AtomicHeartFather的回答,意识到我可能把tail
问题的部分放错了。在这种情况下,命令应该是
ls | tail -n3 | xargs cat
除 之外,这与 AtomicHeartFather 所写的非常相似sort
。