Linux

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > Linux > Linux下xargs和-exec的使用

Linux下xargs和-exec的使用及区别说明

作者:Marco1XIE

文章对比了xargs和-exec在执行Linux命令时的使用方法和区别,指出-exec对每个文件都执行一次命令,而xargs则将所有文件名组合成一个命令行参数,文章还提到,xargs在处理带空格的文件名时会出错,而-exec则每处理一个文件或目录都需要启动一次命令

xargs和-exec使用与区别

一、使用方法

-exec:

find testdir/ -type f -exec echo  {} \;

xargs:

要结合管道来完成

格式:find [option] express |xargs command

find testdir/ -type f | xargs cat

二、区别及优缺点

1、使用echo命令测试

find testdir/ -type f
find testdir/ -type f -exec echo  {} \;
find testdir/ -type f | xargs echo

1)exec是对每个找到的文件都执行一次命令(除非这单个的文件名超过了几k,否则不会出现命令行超长出报错的问题)

2)xargs是把所有找到的文件名全部转给命令(当文件很多时,这些文件名组合成的命令行参数很容易超长,导致命令出错)

2、xargs在处理带空格的文件名时会出错

新建一个带空格的文件:

touch testdir/'space file'

分别使用xargs、-exec测试

find testdir/ -type f | xargs cat
find testdir/ -type f -exec cat {} \;

3、区别及各自优缺点

1)exec 每处理一个文件或者目录,它都需要启动一次命令;

2)exec 格式麻烦,必须用 {} 做文件的代位符,必须用 ; 作为命令的结束符;

3)xargs 不能操作文件名有空格的文件;

综上,如果要使用的命令支持一次处理多个文件,并且知道这些文件里没有带空格的文件,那么使用 xargs比较方便; 否则,就要用 -exec。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文