16:34
xargs将标准输入的参数转换成命令行参数。xargs命令应紧跟在管道命令之后。
例如:
Command |xargs
示例:
查找当前目录下内容包含字符串“main”的文件
$ ls |xargs grep 'main'
删除后缀名为txt的文件
$ find . -type f-name "*.txt" -print0 | xargs -0 rm -f
-0 将\0作为界定符
多行输入转成单行输出 (空格替换掉换行符)
$ cat example.txt #Example file
1 2 3 4 5 6
7 8 9 10
11 12
$ cat example.txt |xargs
1 2 3 4 5 6 7 8 9 1011 12
单行输入转成多行输出(-n 指定每行最大的参数数量)
$ cat example.txt |xargs -n 3
1 2 3
4 5 6
7 8 9
10 11 12
按指定的分界符进行分割(- d )
$ echo"splitXsplitXsplitXsplit" | xargs -d X
split split splitsplit
指定替找字符串操作(-I)
$ cat args.txt #Example file
param0
param1
Param2
如果要对每个param执行如下操作:$cmd -p param -l
则可用如下方法:
$cat args.txt | xargs -I {} cmd -p {} -l
-I指定了一个替换字符串"{}",那么红色标记的{}会被从标准输入读到的参数替换掉。
则该命令等同于执行如下三条命令
cmd -p param0 -l
cmd -p param1 -l
cmd -p param2 -l