在上一篇文章(http://blog.csdn.net/zhoutimo/article/details/52035561)提到过,当执行命令完成后,想 把执行命令后的结果再次进行处理,引用了exec的命令,本篇文章将讲解一个类似的命令xargs。
exec和xargs区别:
exec
1.参数是一个一个传递的,传递一个参数执行一次
2.文件名有空格等特殊字符也能处理
xargs
1.一次将参数传给命令,可以使用-n控制参数个数
2.处理特殊文件名需要采用如下方式:
find . -name "*.txt" print0 |xargs -0 rm {}
总结:总体来说xargs命令对系统优化处理更好一些
xargs命令有两个要点。第一,你必须列出目标文件。第二,你必须指定对每个文件需要执行的命令或脚本。
实例:
[root@10-9-62-247 mm]# cat /mm/ls.log
1
2
有一个位于/mm/目录下的ls.log文件,内容如上。
[root@10-9-62-247 mm]# find /mm -name ls.log |xargs head -n 1
1
执行xargs后,相当于"head ls.log -n -1"(xargs相当于获取上一次执行结果得到的文件,再次进行处理)
试想如果不加xargs是什么情况?
[root@10-9-62-247 mm]# find /mm -name ls.log |head -n 1(普通管道命令是执行上一次执行命令后得到的显示的结果)
/mm/ls.log