说明
从 STDIN 中读取并按照限定符进行分割成 arguments,并调用 utility 执行命令
产生原因
很多命令不支持’|’作为标准输入或者命令参数过长,必须借助 xargs 命令:
1 2 3 4
| find /tmp/ -name "*bamboo*" | ls -l
find /tmp/ -name "*bamboo*" | xargs ls -l
|
关于 find 命令, 见find
操作原理
读入 stdin,以空白字符或者换行符作为分界线,切割为 arguments
格式
xargs [OPTIONS] [utility [argument ...]]
参数
1 2 3 4 5 6 7 8 9 10
| -a FILE 从FILE中读取输入 -E END 设置EOF字符串
-t 先打印命令,再执行,蛮有用的 -l 每一行最多的argument数目 -i/-I 将参数一行一行复制给{},经常使用到,特别是输入非常多的情况下 -d 指定分隔符,默认xargs分隔符是回车,argument分隔符为空格(见-0),这里是修改xargs分隔符 -0 使`,\,EOF当做普通字符,目前仅仅成功使用过` -p 每次执行一个argument时,进行询问 -n 每次执行时使用的argument个数
|
Example
1 2 3 4 5 6 7 8
| echo "xx bb cc dd" |xargs -i -d " " echo {}
ps -ef|grep manage.py|grep -v grep|awk '{print $2}'|xargs kill
find . -type f -name "*.php" -print 0 | xargs -0 wc -l
|