关注IT专业技能,持续提升竞争力。

find命令之xargs

Linux 仙人球 1732℃ 0评论

上一篇文章已经介绍了find命令之exec,使用exec还是有点小问题的,对于常见的很多内容操作,我们采用xargs更保险,下面我摘一下别人的解释:

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

对于xargs的使用,我们仍然采用一个小例子:

仍然是这种状态下,我们执行命令:

上面的小例子,有一个地方需要解释下,-i参数默认是使用{}来代表查询出来的结果,这里可以指定,比如xargs -I [] ls [],就用[]来代表了;

看到了吧,这里也实现了一个拷贝命令,其他的命令非常类似,xargs在工作中使用比较普遍,在shell的面试、考试中估计也会经常遇到,毕竟这种方法比较简单,一条命令能解决的事情我们干什么使用两条命令来解决呢。

转载请注明:V-Lover » find命令之xargs

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(1)个小伙伴在吐槽