您的位置:首页 > 其它

find 命令-exec 参数与 xargs之间的区别

2013-10-23 08:55 375 查看
使用find命令的-exec选项处理匹配到的文件时,find命令将所有匹配到的文件一起传递给-exec执行。但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,它可以按行处理,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。 在有些系统中,使用- e x e c选项会为处理每一个匹配到的文件而发起一个相应的进程,并非将匹配到的文件全部作为参数一次执行;这样在有些情况下就会出现进程过多,系统性能下降的问题,因而效率不高;而使用x a rg s命令则只有一个进程。另外,在使用xargs命令时,究竟是一次获取所有的参数,还是分批取得参数,以及每一次获取参数的数目都会根据该命令的选项及系统内核中相应的可调参数来确定。

生产环境一个下例子
find . -type f -mtime +7 -name "*.log" |xargs rm -ffind . -type f -mtime +7 -name "*.log" -exec rm -f {} \;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  命令 exec 区别 find xargs