小编典典

如果标准输入为空,如何忽略 xargs 命令?

all

考虑这个命令:

ls /mydir/*.txt | xargs chown root

目的是将所有文本文件的所有者更改mydir为 root

问题是,如果其中没有.txt文件,mydir则 xargs 会抛出一个错误,指出没有指定路径。这是一个无害的示例,因为正在引发错误,但在某些情况下,例如在我需要在此处使用的脚本中,假定当前目录为空白路径。因此,如果我从那时起运行该命令,/home/tom/如果没有结果ls /mydir/*.txt并且所有文件/home/tom/都将其所有者更改为 root。

那么我怎样才能让 xargs 忽略一个空结果呢?


阅读 71

收藏
2022-05-26

共1个答案

小编典典

对于 GNU xargs,您可以使用-ror--no-run-if-empty选项:

--no-run-if-empty
-r
如果标准输入不包含任何非空格,请不要运行该命令。通常,即使没有输入,该命令也会运行一次。此选项是 GNU 扩展。

在 macOS 上使用的 BSD 版本xargs不会为空输入运行命令,因此-r不需要该选项(该版本也不接受它xargs)。

2022-05-26