假设我运行一个不带 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。