Linux xargs命令的使用(linux系统)
1.功能:
xargs可以将stdin中以空格或换行符进行分隔的数据,形成以空格分隔的参数(arguments),传递给其他命令。因为以空格作为分隔符,所以有一些文件名或者其他意义的名词内含有空格的时候,xargs可能会误判。简单来说,xargs是给其他命令传递参数的一个过滤器,是构建单行命令的重要组件之一。
之所以要用到xargs,是因为由于很多命令不支持使用管道|来传递参数,例如:
find /sbin -perm +700 |ls -l //这个命令是错误,因为标准输入不能作为ls的参数 find /sbin -perm +700 |xargs ls -l //这样才是正确的
2.命令格式
xargs [选项] [command]
3.选项说明:
-0:如果输入的stdin含有特殊字符,例如反引号`、反斜杠\、空格等字符时,xargs可以将它还原成一般字符。为xargs的默认选项。
-e
4.用法示例
(1)将shell的特殊字符还原为一般字符。
[b3335@MIC ~]$ echo '`0123`4 56789'|xargs -t echo echo `0123`4 56789 `0123`4 56789
如果直接进行如下操作,会报无法找到命令01234的错误,因为反引号在shell中会将01234作为一个命令来执行,但是01234不是一个命令。-t表示先打印命令,然后再执行。
[b3335@MIC ~]$ echo `01234` 56789 -bash: 01234: command not found 56789
(2)设置xargs读入参数时的结束标识,以逗号结束。这里要注意结束标志必须要是单独的字段,即以空格或者换行符分隔的字段。
[b3335@MIC ~]$ echo 01234 , 56789|xargs -E "," 01234
(3)使用rm、mv等命令同时操作多个文件时,有时会报”argument list too long”参数列表过长的错误,此时可以使用xargs来解决。xargs将标准输入的字符串分隔后,单独作为参数传递给后面的命令。例如,将当前目录的所有文件添加后缀名。
ls | xargs -t -i mv {} {}.bak #选择符合条件的文件 ls|grep -E "201701|201702|201703|201704|201705|201706|201707|201708|201709|201710" |xargs -i mv {} {}.bak
(4)设置命令行的最大字符数。参数默认一个一个单独传入命令中执行。
[b3335@MIC test]$ echo "01234 56789"|xargs -t -s 11 echo 01234 01234 echo 56789 56789
(5)设置标准输入中每次多少行作为命令的参数,默认是将标准输入中所有行的归并到一行一次性传给命令执行。
[b3335@MIC test]$ echo -e "01234\n56789\n01234" | xargs -t -L 2 echo echo 01234 56789 01234 56789 echo 01234 01234
(6)将文件内容以空格分隔同行输出。
//列出文件内容 cat test.txt a b c d e f g h i j k l m n o //多行输入单行输出: cat test.txt | xargs a b c d e f g h i j k l m n o
(7)与ps、grep、awk和kill结合,强制终止指定进程
ps -ef|grep spp|awk '{printf "%s ",$2}'|xargs kill -9
命令解释: ps -ef|grep spp用于查找包含spp的进程,awk '{printf "%s ",$2,FNR}将目标进程ID打印输出,xargs kill -9则将目标进程ID作为参数传递给kill -9用于杀死进程。
以上就是Linux xargs命令的使用的详细内容,更多关于Linux xargs命令的资料请关注其它相关文章!
发表评论
暂时没有评论,来抢沙发吧~