我试图产生这种行为:
grep 192.168.1 *.txt
Run Code Online (Sandbox Code Playgroud)
通过 Xargs 将字符串传递到 grep 中,但它会在最后而不是作为第一个参数。
echo 192.168.1 | xargs grep *.txt
Run Code Online (Sandbox Code Playgroud)
我需要告诉 xargs(或类似的东西)将传入的字符串放在 'grep' 和 '*' 之间,而不是放在最后。
我该怎么做呢?
slm*_*slm 134
$ echo 192.168.1. | xargs -I{} grep {} *.txt
Run Code Online (Sandbox Code Playgroud)
示例文件:
$ cat {1..3}.txt
192.168.1
192.168.1
192.168.1
Run Code Online (Sandbox Code Playgroud)
示例运行:
$ echo 192.168.1. | xargs -I{} grep {} *.txt
1.txt:192.168.1.
2.txt:192.168.1.
3.txt:192.168.1.
Run Code Online (Sandbox Code Playgroud)
小智 5
另一种方法:
find . -name \*.txt -print0 | xargs -0 grep 192.168.1
Run Code Online (Sandbox Code Playgroud)
这不会因文件名过多而溢出 shell 的命令行长度。为了避免混淆xargs
/grep
与带有空格的文件名,-print0
选项-0
将使用 null 而不是 LF 来描述每个找到的名称。
归档时间: |
|
查看次数: |
79345 次 |
最近记录: |