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

 更新时间:2026年03月04日 08:55:14   作者:Marco1XIE  
文章对比了xargs和-exec在执行Linux命令时的使用方法和区别,指出-exec对每个文件都执行一次命令,而xargs则将所有文件名组合成一个命令行参数,文章还提到,xargs在处理带空格的文件名时会出错,而-exec则每处理一个文件或目录都需要启动一次命令

xargs和-exec使用与区别

一、使用方法

  • 两者都是对符合条件的文件执行所给的Linux 命令,而不询问用户是否需
  • 要执行该命令

-exec:

  • {}表示命令的参数即为所找到的文件,以;表示comman命令的结束,\是转义符,
  • 因为分号在命令中还有它用途,所以就用\来表示这是一个分号而不是表示其它意思
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。

总结

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

相关文章

  • Linux下修改jar、zip等文件内的文件详解

    Linux下修改jar、zip等文件内的文件详解

    这篇文章主要介绍了Linux下修改jar、zip等文件内的文件详解的相关资料,需要的朋友可以参考下
    2017-03-03
  • 详解Linux常用命令的用法(二)————文本编辑器命令vi/vim

    详解Linux常用命令的用法(二)————文本编辑器命令vi/vim

    这篇文章主要介绍了Linux常用命令的用法(二)————文本编辑器命令vi/vim,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • Linux服务器上查看内网IP和公网IP的方法小结

    Linux服务器上查看内网IP和公网IP的方法小结

    本文介绍如何在Linux系统中查看本机的公网IP地址和内网IP地址,对于公网IP地址,可以通过curl命令调用第三方服务如ifconfig.me或cip.cc获取;而内网IP地址则可以直接使用ifconfig命令查看,需要的朋友可以参考下
    2025-12-12
  • linux网络知识详解:iptables 规则介绍

    linux网络知识详解:iptables 规则介绍

    这篇文章主要介绍了linux网络知识详解:iptables 规则介绍,需要的朋友可以参考下
    2024-02-02
  • Linux Swap空间利用率过高问题

    Linux Swap空间利用率过高问题

    这篇文章主要介绍了Linux Swap空间利用率过高问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • centos7利用yum安装lnmp的教程(linux+nginx+php7.1+mysql5.7)

    centos7利用yum安装lnmp的教程(linux+nginx+php7.1+mysql5.7)

    lnmp相信不用多介绍了,大家应该都知道,下面这篇文章主要给大家介绍了关于centos7利用yum安装lnmp(linux+nginx+php7.1+mysql5.7)的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2018-03-03
  • 在ubuntu中部署samba服务器的方法

    在ubuntu中部署samba服务器的方法

    这篇文章主要介绍了在ubuntu中部署samba服务器的方法,包括samba的安装,创建Samba配置文件的方法,本文给大家介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下
    2016-10-10
  • 什么是Linux软链接和Linux硬链接

    什么是Linux软链接和Linux硬链接

    这篇文章主要为大家详细介绍了什么是Linux软链接和Linux硬链接,在默认情况下,ln命令产生硬链接,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • Linux程序替换方式

    Linux程序替换方式

    这篇文章主要介绍了Linux程序替换方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-06-06
  • htaccess Rewrite中文编码问题解决方法

    htaccess Rewrite中文编码问题解决方法

    Seo方面对于中文地址或则文件名,在Google好像比重要大一些,今天正好看到andy的文章.转下,以后也许会用.
    2008-10-10

最新评论