Xargs
使 xargs 作為第一個參數傳遞
我正在嘗試產生這種行為:
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 來描述每個找到的名稱。