xargs

来源:互联网 发布:网络语555… 编辑:程序博客网 时间:2024/06/02 23:04

简述

作用:从标准输入中读取数据,以空白或者换行符作为分隔符分割数据,并以此数据作为参数执行命令(默认命令是echo)。

简单的说,xargs是用来执行别的命令的。那么,问题就来了,别的命令难道不能直接执行么?为什么需要xargs这个第三者来倒一手?原因就在于有许多命令不支持管道来进行参数传递(也就是不支持数据流)。比如,想要得到当前目录下以.log结尾的所有文件的详细信息,你可能会这么写:

find . -maxdepth 1 -name "*.log" | ls -l

然而,这样是不能得到正确的结果的,正确的写法是:

find . -maxdepth 1 -name "*.log" | xargs ls -l

常用options

-a:后跟文件名,从文件中读取数据。

-t:打印出执行的命令(输出到标准错误),如果想要知晓过程,可以打开此选项。

-I:通常与{}一起使用,{}代表读到的数据。一个例子,把当前目录下的所有文件移到父目录: ls | xargs -I{} mv {} ../

-p:使操作具有交互性,在真正执行之前会先询问你。

-n:每次执行命令的参数个数最大值。

应用举例

1,文件夹下文件太多,尝试rm 会提示Argument list too long,可以使用xargs:
ls|xargs -n 10 rm -f
2,批量删除(apache)进程:
ps aux|grep apache |awk '{print $2}' | xargs kill -9



0 0