红联Linux门户
Linux帮助

xargs命令

发布时间:2017-01-13 10:44:17来源:linux网站作者:lym152898
xargs命令和其他命令结合使用是非常有用的.
这篇文章将会通过几个简单的例子来阐述xargs命令的用法,这些例子会帮助你理解xargs命令是怎样工作的,只要你理解了这些基本概念,你就可以写出解决各式各样命令行问题的绝佳例子.
xargs命令的语法格式:
xargs [-0prtx] [-E eof-str] [-e[eof-str]] [–eof[=eof-str]] [–null] [-d delimiter] [–delimiter delimiter] [-I replace-str] [-i[replace-str]] [–replace[=replace-str]] [-l[max-lines]] [-L max-lines] [–max-lines[=max-lines]] [-n max-args] [–max-args=max-args] [-s max-chars] [–max-chars=max-chars] [-P max-procs] [–max-procs=max-procs] [–interactive] [–verbose] [–exit] [–no-run-if-empty] [–arg-file=file] [–show-limits] [–version] [–help] [command [initial-arguments]]
 
1.xargs的简单例子
xargs命令从标准输入获得输入(默认),然后对得到的输入执行/bin/echo命令.下面就是你不使用任何参数或者结合其他命令时,使用xargs命令的结果.
当你在字符终端敲xargs命令并不带任何参数时,它会提示你从标准输入键入你想要输入的内容.
xargs命令
使用ctrl + D 结束输入后,输入会回显到标准输出,输出如下:
xargs命令
 
2.使用-d选项指定分隔符
任意分割符都可以被使用,所以输入里的每一个字符都可以在xargs命令中使用-d选项按照字面指定.
虽然在上一个例子中,Hi,的后面包含有换行符’\n’,但是回显输出并没有包含换行符’\n’,也就是说,上一个例子的输出,被转换成了单行.
在下面的例子中,当你使用-d\n选项时,它会在输出中保留换行分隔符,显示的输出和键入的内容完全一样.
xargs命令
当你键入上述内容之后,按ctrl + D 结束之后,输入会回显到标准输出,输出如下,但是这次保留了换行符.
xargs命令
 
3.使用-n选项限制每行的输出
默认情况下,会像之前解释的那样,xargs会显示任何来自标准输入的内容这里写图片描述
但是可以通过使用-n选项把xargs命令的输出切割成多行.
在下面的例子中,我们使用-n选项,xargs的输出每行只包含3个项目.
xargs命令
同样,你可以想下面意向使用-n 2,把xargs的输出切割成每行只包含两个项目.
xargs命令
 
4.使用-p选项在xargs执行之前提醒用户
使用-p选项,你可以决定xargs命令是否需要执行
回想之前的例子,如果我们用户想自己决定/bin/echo命令的执行,我们可以想下面一样使用-p选项来达到目的
xargs命令
在下面的输出中,我对所有的echo输出都说no,所以xargs没有执行任何东西.
xargs命令
注:这在xargs命令和其他具有破坏性的命令如rm结合使用的时候时非常有用的.因为在这些情况下我们都想知道xargs命令都做了写什么.
 
5.使用-r选项避免默认为空白输入执行/bin/echo命令
当有一个空白输入的时候(例如没有给xargs命令输入)它会执行一次/bin/echo命令,这会显示新的一行.
xargs命令
xargs命令
 
6.使用-t选项打印命令和输出
在下面的例子中,给命令xargs -t 命令输入abcd
xargs命令
按下ctrl + D 完成上面的xargs -t命令,这时在显示输出之前会先显示xargs真正执行的命令
在这里,xargs执行的命令是”/bin/echo abcd”
xargs命令
 
7.xargs命令和find命令结合使用
当你像找到确定的文件类型以及对他们进行相应的动作(最常用的是删除),这是xargs命令最重要的使用之一.
xargs和其他命令结合使用时非常高效的.
在下面的例子中,我们把find命令的输出作为xargs命令的输入,但是此时,xargs命令对输入执行的是rm命令,而不是默认的/bin/echo命令.
因此,在这个例子中,find命令输出结果是以.c为扩展名全部文件.这些输出作为xargs命令的输入,反过来,xargs对这些扩展名为.c的文件执行”rm -rf”命令
xargs命令
xargs命令
 
8.删除文件名中含有空格符的文件
我们可以看到尽管已经对这个目录下的.c文件执行了rm命令,但是The Geek Stuff.c文件还是没有被删除.这是因为这个文件的文件名包含着空格符.
正如下面的例子显示,rm命令删除了所有扩展名为.c的文件除了文件名中包含空格符的”The Geek Stuff.c”文件.
xargs命令
在这种情况下,find 命令使用-print0选项和xargs使用-0选项就可以删除文件名中包含空格符的文件.
xargs命令
 
9.使用-show-limits 选项显示系统对xargs命令的限制
看下面的例子:
下面的例子显示了系统设置的所有限制,这会对xargs的工作方式有一定的影响.
xargs命令
 
10.xargs和grep命令结合使用
xargs命令和grep命令结合使用可以从find命令返回的查找结果中过滤出指定的文件
在下面的例子中,find命令提供的.c文件做为xargs命令的输入
xargs命令执行grep命令去找(find命令提供的文件中)包含字符串”stblib.h”的所有文件
xargs命令
 
本文永久更新地址:http://www.linuxdiyf.com/linux/27769.html