如何使用一个命令的输出作为另一命令的输入

如何使用一个命令的输出作为另一命令的输入

我制作了每周星期三所做的所有备份的副本 每个文件的时间戳未排序,但日期是每个文件的星期三

现在,我需要根据时间戳对每个文件进行排序,例如,如果日期是 5 月 1 日,那么它应该首先显示 5 月 1 日的备份文件,然后应该显示 5 月 8 日的文件

我使用了这个命令,但它当然给我带来了错误

sort $(cat /home/emerg/Wedbackup.txt)

错误是

sort: invalid option -- w

因为我不知道如何使用一个命令的输出作为第二个命令的输入。我需要建议如何去做。

答案1

在这种情况下不需要使用 cat:

sort /home/emerg/Wedbackup.txt

您的示例的问题是您的文件被传递为命令行排序,这不是你想要的。例如,如果这是您的文件:

foo bar
baz qux
wibble wobble

参数如下所示:

sort foo bar baz qux wibble wobble

这不是你想要的。您真正想要的是将文件传递到sortstdin 上,可以像这样完成:

sort < /home/emerg/Wedbackup.txt

这是更通用的,因为将文件名作为参数是特定于 的sort,并且不是通用约定。

在排序的情况下,您应该更喜欢将文件名作为参数传递,而不是在标准输入上传递,因为它允许在文件上查找,这可以提高排序效率。

答案2

您应该使用管道,如下所示:

cat /home/emerg/Wedbackup.txt | sort

相关内容