Linux xargs命令的使用
作者:Dabelv 发布时间:2023-03-10 10:22:04
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 <flag>,-E <flag>,--eof=<eof-str>:eof是end of file string的意思。flag可以是一个字符串或者是由空格分隔的多个字符串,当xargs分析到这个flag时,就会停止工作。见示例2。
-p:当每次执行一个argument的时候询问一次用户。
-n <num>:表示命令在执行的时候一次使用的argument的个数,由num指定,默认是用所有的参数。
-t:表示先打印命令,然后再执行。
-a <file>:从文件中读入作为sdtin。
-i[replace-str]:告诉xargs可以使用{}代替从标准输入读取的参数,可以指定替代字符串replace-str,如果没有指定,默认为{}。建议使用-I,其符合POSIX标准。
-I [replace-str]:将xargs的输出每一项参数,单独赋值给后面的命令,参数需要用指定的代替字符串replace-str代替,也就是说replace-str不可缺省,必须显示指明,可以使用{} $ @等符号,其主要作用是当xargs command后有多个参数时,调整参数位置。例如:find . -name "*.txt"|xargs -I {} cp {} /tmp/{}.bak。
-r:或者--no-run-if-empty,当xargs的输入为空的时候则停止xargs,不用再去执行后面的命令了,-r是xargs的默认选项。
-s <num>:命令行的最大字符数,指的是xargs后面那个命令的最大命令行字符数,包括命令、空格和换行符。每个参数单独传入xargs后面的命令。见示例4。
-L <line_num>:设置标准输入中最大的行数作为命令每一次执行的参数。见示例5。
-d <delim>, --delimiter=<delim>: xargs处理标准输入默认是按换行符和空格作为分隔符,输出arguments的分隔符是空格,这里修改xargs处理标准输入时的分隔符。
-x:eXit的意思,主要是配合-s使用,当命令行字符数大于-s指定的数值时,退出xargs。
-P:修改最大的进程数,默认是1,为0时候为as many as it can。该选项比较少用,目前还不清楚该用法。
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用于杀死进程。
来源:https://cloud.tencent.com/developer/article/1176385
猜你喜欢
- 文件传输协议(FTP:File Transfer Protocol)使得主机间可以共享文件。 FTP 使用 TCP 生成一个虚拟连接用于控制
- 2009年10月10号,美图秀秀官网发布了2.0周年版,小编这才发现原来美图秀秀已经一岁了。在感叹时间飞逝的同时,小编针对美图秀秀一年来的改
- 常见的线上推广网站方法SEO,论坛群发,Email群发,软文写作,投放网络广告等,估计大家用的多了,见的多了。但是大家有没有尝试过去做做线下
- 网站更换域名后通常会进行网址301重定向,通过301重定向可以把旧域名的权重转移到新域名,把不带www的域名权重转移到带www的域名,有利于
- 近日笔者接触到很多企业都声称要招募手机网游开发人员,笔者想或许是这些企业打算在手机网游领域奋力一搏,势必要取得在网游以及网页游戏等领域中失去
- Docker 使用了客户端 -- 服务端模型。服务端对外提供 REST API。默认安装方式,客户端和服务端在同一台主机上,通过本地安全 P
- google的403错误提示:很抱歉..... 此刻我们无法回应您的要求。该请求通过电脑病毒或间谍软件向我们自动发送,而且看来您的电脑或网络
- 不单单用户的角度品牌具有一定的优势外,就连搜索引擎也将其列入算法之中。如果说这是Google研究小组的突发奇想,更不如说是Google为了近
- PHPWind v7.3.2“引用”的返回链接如果链接到主题部分出错。解决方法:打开job.php查找:} elseif 
- 从个人角度来解析下网络广告中产生的广告主,网站主,广告联盟。联盟包括三要素: 广告主、网站主和广告联盟平台。广告主按照网络广告的实际效果(如
- 在使用VMware Workstation(以下简称:VMware)创建虚拟机的过程中,配置虚拟机的网络连接是非常重要的一环,当我们为虚拟机
- 在这篇文章中以VMware14为例,Linux操作系统采用CentOS7进行讲解如何在虚拟机中安装Linux操作系统。一、选择创建新的虚拟机
- 肥胖 长期坐在电脑前的人,因缺乏锻炼,会出现重力性脂肪组织分布异常。脂肪堆积在下腹部和腰背部,导致向心性肥胖。 下肢静脉曲张 因缺乏活动,依
- 从使用虚拟空间到使用独立服务器,这对一个站长来说是一件惊天动地的大事,对于一个没有拿自己电脑做过服务器的站长来说,第一次拿到属于自己的服务器
- 记者:您作为Google主管产品和用户体验的副总裁,怎么看待未来搜索技术的趋势? 玛丽萨.迈尔:我认为未来搜索技术的趋势主要有六个方面:一是
- 目前很多杀毒软件都带有反广告的功能,可以屏蔽页面上出现的 Flash 广告。就拿卡巴斯基为例,它使用路径规则来过滤 Flash 内容。具体设
- 第一张google寄来的美元支票的时间是2004年,收到google寄来的支票了,有点出乎意料。相信许多站长都有收到第一张支票的激动,goo
- 一、网站推广目标线下推广是跟博客推广,论坛推广,搜索引擎推广等线上推广相反的一种推广方式,它更侧重于传统模式的而非网络模式的推广,注重实际生
- 对于个人站长来讲,最悲惨的事,莫过于被人长时间的ddos.对于很多新手来讲,网站被攻击时,显然还是显的不知所措,只能静静地等待攻击者“不耐烦
- 俗称“脚本小鬼”的家伙 是属于那种很糟糕的黑客,因为基本上他们中的许多和大多数人都是如此的没有技巧。可以这样说,如果你安装了所有正确的补丁,