53 我正在尝试产生这种行为: grep 192.168.1 *.txt 通过Xargs将字符串传递给grep,但是它在最后而不是作为第一个参数。 echo 192.168.1 | xargs grep *.txt 我需要告诉xargs(或类似的东西)将输入的字符串放在'grep'和'*'之间,而不是放在最后。 我该怎么做呢? xargs — 安迪引导 source 类似于如何查找文件,然后使用xargs移动它们?。 — manatwork 2013年
83 $ echo 192.168.1. | xargs -I{} grep {} *.txt 例 样本文件: $ cat {1..3}.txt 192.168.1 192.168.1 192.168.1 示例运行: $ echo 192.168.1. | xargs -I{} grep {} *.txt 1.txt:192.168.1. 2.txt:192.168.1. 3.txt:192.168.1. — slm source 谢谢,它有效。但为什么?您用-I代替什么?我不明白 — e18r 6 大括号似乎是一个占位符。您可以将{}替换为任意内容:echo 192.168.1。| xargs -I pholder grep pholder * .txt — 规范化程序
3 另一种方法: find . -name \*.txt -print0 | xargs -0 grep 192.168.1 这不会使shell的命令行长度包含过多的文件名。为了避免混淆xargs/ grep与有空格的文件名,-print0并-0选择将划定各自找到名称与一个空,而不是一个LF。 — 比尔·霍格 source