shell的xargs命令
在使用find命令的-exec选项处理匹配到的文件时,find命令将所有匹配到的文件一起传递给exec执行。不幸的是,有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这就是xargs命令的用处所在,特别是与find命令一起使用。Find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。
下面对xargs命令作简单介绍。
xargs命令的常用选项(这里只对我认为较常用的4个选项作出说明):
-t——显示xargs执行生成的每个shell命令,而具体生成命令的个数,则与-n选项以及传给xargs的参数个数有关,当调试时此选项非常有用。如:
-p——询问是否执行生成的每个shell命令,输入'n'不执行,输入'y'执行。如:
-n Number——一般情况下xargs会将其接收的所有参数放入一个命令中执行,这样就又可能造成命令参数太长的问题,而-n Number选项则把所有参数分为若干组放入命令中执行,而一组中的参数数目的最大值就是-n后面的Number值。如:
-i——提供类似于一种编程正常编程语言中的占位符机制,这种机制中的占位符是“{}”。如: