使用 xargs 的好处

使用 xargs 的好处

假设我运行一个不带 xargs 的 find 命令

find . -iname 'connect*' > cat output.txt

问题:1。如何使用 xargs 命令将 find 命令的输出复制到文本文件? 2. 使用命令xargs而不是仅仅使用有什么优势>

我尝试了下面的一项,但似乎不正确。

find . -iname 'connect*'  | xargs -t cat > output.txt

答案1

xargs从标准输入和命令行中获取字符串。它使用来自 stdin 的字符串作为命令行的参数来运行命令行。它基本上是在做间接的。如果您有文件名列表(例如find生成),您可以使用xargs.就像从多个文本文件中获取前 20 个词频列表一样:

find . -name '*.txt' | xargs cat | tr -s '[:blank:]' '\n' | sort | uniq -c | sort -k1.1nr | head -20

我不确定是否值得执行问题 1 中的任务。我确信可以完成,但为什么要麻烦呢?这就是问题 2 的答案:无论是在性能上还是在意图的清晰度上都没有优势。

一般来说,使用的优点xargs是您可以做一些复杂的事情来决定将哪些文件名放在其标准输入上。你find可以添加创建时间,或者多个名称,或者其他什么。仅拥有文件名的静态列表就否定了您可能获得的任何优势xargs:您最好使用或运行将在循环中运行的cat命令。xargs

答案2

xargs 帮助您在输出行上执行命令,例如:

find . -name '*.mp3' | xargs mp3info

对于 find 找到的每个文件(即输出行)

mp3info <filename>

被执行

如果你想用所有的find 的输出,您根本不需要 xargs。

相关内容