xargs -I选项

我是

xargs的手册说:

-I replace-str
--replace [= replace-str]
-i [replace-str]
用从标准输入中读取的名称替换初始参数中出现的replace-str。

我不明白这部分内容: with names read from standard input.

例如发生了什么事:

find . -mindepth 1 -maxdepth 1 -print0 | xargs -0I{} echo | wc -l

上面的代码计算了目录中的文件/目录总数。

有人可以帮我解释一下吗?

斯蒂芬·基特

“使用从标准输入中读取的名称”表示xargs将数据输入到其标准输入中,进行拆分,然后使用它来运行其自变量中给出的命令。默认情况下,它以空格或换行符分隔,并一次运行echo带有尽可能多的参数。

-0您的示例中选项指示xargs将其输入拆分为空字节,而不是空白或换行符。具有组合find-print0,这允许包含空白或换行符的文件名被适当地处理。

-I选项更改了构建新命令行的方式。与其一次添加尽可能多的参数,不如xargs一次从其输入中取一个名称,查找给定的标记({}在此)并将其替换为名称。

在您的示例中,{}给定的命令模板中不存在xargs,因此实际上xargs指示echo它不带任何参数地运行,对于为其赋予的每个文件名一次find要查看此内容,请删除wc

find . -mindepth 1 -maxdepth 1 -print0 | xargs -0I{} echo

您会看到一系列空行...与以下内容进行比较

find . -mindepth 1 -maxdepth 1 -print0 | xargs -0I{} echo {}

find . -mindepth 1 -maxdepth 1 -print0 | xargs -0 echo

find . -mindepth 1 -maxdepth 1 -print0 | xargs -0

以获得更好的理解。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章