xargs是类Unix系统中的一个命令,它从标准输入中读取项目,由空格(可以用双引号或单引号或反斜杠保护)或换行分隔定界,并执行命令(默认/bin/echo)一次或多次,标准输入上的空行将被忽略。xargs命令与其他命令结合使用非常方便。默认情况下,它需要来自STDIN的输入。xargs主要用于增强原始命令的输出,并对输出进行大量操作。在这篇文章中,我们将讨论11个linuxxargs命令的实际例子(一)基本用法输入xargs,它会期待我们回车,输入一行,回车结束,输入下一行,然后执行ctrl+d查看输出如下linuxtechi@mail:~$xargshellojohnthisisme(ctrl+d)hellojohnthisismelinuxtechi@mail:~$home/Downloads#(2)Usedelimiter(-d)Useoption-dtospecifydelimiter,并使用\n作为分隔符。当按下ctrl+d时,会回显到屏幕上[root@linuxtechi~]#xargs-d\nHiWelcomehereNowpressCtrl+DHiWelcomehereNowpressCtrl+D[root@linuxtechi~]#(3)limiteachlineOutput(-n)可以在xargs命令中使用-n选项根据需要限制输出,例如每行只显示2项linuxtechi@mail:~$echoa1b2c3d4e45a1b2c3d4e5linuxtechi@mail:~$回声a1b2c3d4e5|xargs-n2a1b2c3d4e5linuxtechi@mail:~$(4)Enableuserpromptbeforeexecution(-p)在xargs命令中使用选项-p,在执行前提示用户y(yes)和n(no))linuxtechi@mail:~$echoa1b2c3d4e5|xargs-p-n2/echoa1b2?...ya1b2echoc3d4?...yc3d4echoe5?...nlinuxtechi@mail:~$linuxtechi@mail:~$echoa1b2c3d4e5|xargs-p-n2/echoa1b2?...ya1b2echoc3d4?...yc3d4echoe5?...ye5linuxtechi@mail:~$(5)使用find和xargs删除文件假设我们要删除*/tmp文件夹中的.txt文件,运行以下命令linuxtechi@mail:~$find/tmp-typef-name'*.txt'|xargsrm注意:始终建议使用上述find和xargs命令的组合删除1000多个文件,因为它可以节省时间和系统资源。(6)用xargs和grep命令搜索你可以使用grep命令和xargs从find命令的结果中过滤特定的搜索。linuxtechi@mail:~$查找。-名称“邮票”|xargsgrep"country"country_name文件中的空格。linuxtechi@mail:~$查找/tmp-name"*.txt"-print0|xargs-0ls/tmp/abcdasd.txt/tmp/asdasdasdasd.txt/tmp/cdef.txtlinuxtechi@mail:~$find/tmp-name"*.txt"-print0|复制代码xargs-0rmlinuxtechi@mail:~$(8)xargswiththecut命令为了演示,让我们首先创建一个cars.txtlinuxtechi@mail:~$catcars。txtHundai,SantroHonda,MobilioMaruti,ErtigaSkoda,Fabia显示第一列数据如下linuxtechi@mail:~$cut-d,-f1cars.txt|排序|xargsHondaHundaiMarutiSkodalinuxtechi@mail:~$(9)计算每个文件的行数linuxtechi@mail:~$ls-1*.txt|xargswc-l4cars.txt13trucks.txt17totallinuxtechi@mail:~$(10)将文件移动到不同的位置linuxtechi@mail:~$pwd/home/linuxtechilinuxtechi@mail:~$ls-l*.sh-rw-rw-r--1linuxtechilinuxtechi0Sep1522:53abcde.sh-rw-rw-r--1linuxtechilinuxtechi0Sep1522:53abcd.sh-rw-rw-r--1linuxtechilinuxtechi0Sep1522:53fg.shlinuxtechi@mail:~$须藤查找。-name"*.sh"-print0|xargs-0-I{}mv{}备份/linuxtechi@mail:~$ls-ltr备份/总计0-rw-rw-r--1linuxtechilinuxtechi0Sep1522:53abcd.sh-rw-rw-r--1linuxtechilinuxtechi0Sep1522:53abcde.sh-rw-rw-r--1linuxtechilinuxtechi0Sep1522:53fg.shlinuxtechi@mail:~$(11)替换命令中的字符串(-i)如果我们运行下面的命令,将会在当前工作目录下创建三个文件a、b和clinuxtechi@mail:~$printf"a\nb\nc\n"|xargstouch如果要创建a.txt、b.txt和c.txt,那么在xargs命令中使用-i参数,它会将a替换为a.txt,以此类推,示例如下:linuxtechi@mail:~$printf"a\nb\nc\n"|xargs-itouch{}.txt我的开源项目course-tencent-cloud(酷瓜云课堂-gitee仓库)course-tencent-cloud(酷瓜云课堂-github仓库)
