xia*_*012 4 command-line pipe xargs
我试图了解的用法xargs
并做了以下实验。
ls | xargs | touch
Run Code Online (Sandbox Code Playgroud)
我想刷新当前目录中的文件日期和目录。
虽然有点傻,因为我可以用更简单的形式来达到同样的效果。
在我看来,xargs
从 读取STDIN
并将其转换为其他命令的参数(/bin/echo
如果未指定命令,则默认情况下)。我误解了什么吗?
它失败了,我想知道为什么。
它需要是这样的:
ls | xargs touch
Run Code Online (Sandbox Code Playgroud)
该xargs
命令touch
使用从 stdin 读取的多个字符串运行该命令。在您的情况下,stdin forxargs
是来自ls
.
你有命令的方式:
ls | xargs | touch
Run Code Online (Sandbox Code Playgroud)
xargs
没有针对将从标准输入读取的字符串(文件名)运行的命令。在这种情况下,xargs
只需打印每个文件名,并touch
在其标准输入中获取文件名列表。但touch
不从其标准输入读取,并且由于您没有给它任何参数,它应该打印如下错误消息:
touch: missing file operand
Try `touch --help' for more information.
Run Code Online (Sandbox Code Playgroud)
(你应该在你的问题中提到过)。