Xargs

使 xargs 作為第一個參數傳遞

  • September 9, 2014

我正在嘗試產生這種行為:

grep 192.168.1 *.txt

通過 Xargs 將字元串傳遞給 grep ,但它是在末尾而不是作為第一個參數。

echo 192.168.1 | xargs grep  *.txt

我需要告訴 xargs (或類似的東西)將傳入的字元串放在 ‘grep’ 和 ‘*’ 之間,而不是放在最後。

我該怎麼做呢?

$ 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.

另一種方法:

find . -name \*.txt -print0 | xargs -0 grep 192.168.1

這不會用太多文件名溢出 shell 的命令行長度。為了避免混淆xargs/grep與帶有空格的文件名,-print0選項-0將用 null 而不是 LF 來描述每個找到的名稱。

引用自:https://unix.stackexchange.com/questions/91596