作用
xargs,是execute arguments的缩写,它的作用是从标准输入中读取内容,并将
此内容传递给它要协助的命令,并作为那个命令的参数来执行。
与管道的区别
- 管道可以实现:将前面的标准输出作为后面的 标准输入
- 管道无法实现:将前面的标准输出作为后面的 命令参数
1 | $ cat /etc/passwd | grep root |
分隔符
xargs会将前一个命令的标准输出转换成命令参数,但很多人可能不知道的是,xargs的标准输入中出现的“换行符、空格、制表符”都将被空格取代
xargs默认的分隔符是空格
还可以使用-d选项来指定任何一个符号作为分隔符
find and xargs
1 | find . -name '*.log' -print0 | xargs -0 rm -f |
xargs提供了-0选项,允许将NULL作为分隔符,而find命令也心有灵犀地提供了对应的选项来产生以NULL字符作为分隔符的输出。
find命令提供的对应方法是-print0选项,在文件名之后输出NULL,而不像-print选项那样输出换行符(换行符会被xargs替换成空格)。
xargs的-0选项不仅可以将分隔符从默认的空格变成NULL,还会将单引号、双引号、反斜线等统统默认为是普通字符。所以说,-0选项特别适合处理命令参数中含有引号、空格、反斜线的情况.
other options
- p 参数打印出要执行的命令,询问用户是否要执行
- I 要将命令行参数传给多个命令
1 | $ cat foo.txt |