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中高效清空日志文件的完整指南

    Linux中高效清空日志文件的完整指南

    在Linux服务器管理中,日志文件是排查问题,监控系统状态的重要工具,本文将详细介绍在Linux中清空日志文件的多种方法,感兴趣的小伙伴可以了解一下
    2025-06-06
  • 详解Linux驱动中,probe函数何时被调用

    详解Linux驱动中,probe函数何时被调用

    这篇文章主要介绍了详解Linux驱动中,probe函数何时被调用 ,具有一定的参考价值,有兴趣的同学可以了解一下。
    2016-12-12
  • Linux中设置SSH免密码(密钥)登录的具体步骤

    Linux中设置SSH免密码(密钥)登录的具体步骤

    SSH是一种加密的网络协议,广泛用于远程管理服务器和安全传输文件,通常在使用SSH时需要输入密码进行验证,但通过配置免密登录,我们可以省去每次输入密码的麻烦,所以本文给大家介绍了Linux中设置SSH免密码(密钥)登录的具体步骤,需要的朋友可以参考下
    2025-07-07
  • 详解bash中的初始化机制

    详解bash中的初始化机制

    这篇文章主要介绍了详解bash中的初始化机制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • Linux系统中关闭swap分区的完整操作步骤

    Linux系统中关闭swap分区的完整操作步骤

    这篇文章主要介绍了在Linux系统中关闭swap分区的步骤,包括查看swap使用情况、临时关闭swap、永久关闭swap并编辑/etc/fstab文件、重启系统验证以及注意事项,需要的朋友可以参考下
    2025-10-10
  • Linux服务器安装PHP MongoDB扩展的方法

    Linux服务器安装PHP MongoDB扩展的方法

    这篇文章主要介绍了Linux服务器安装PHP MongoDB扩展的方法,需要的朋友可以参考下
    2016-11-11
  • Linux命令之firewalld的用法

    Linux命令之firewalld的用法

    这篇文章主要介绍了Linux命令之firewalld的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • 安装Ubuntu 16.04后要做的事(总结)

    安装Ubuntu 16.04后要做的事(总结)

    Ubuntu 16.04发布了,带来了很多新特性,同样也依然带着很多不习惯的东西,所以装完系统后还要进行一系列的优化。本篇文章主要介绍了安装Ubuntu 16.04后要做的事,有兴趣的可以了解一下。
    2016-12-12
  • Linux 6 修改ssh默认远程端口号的操作步骤

    Linux 6 修改ssh默认远程端口号的操作步骤

    这篇文章主要介绍了Linux 6 修改ssh默认远程端口号的操作步骤,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • 在Ubuntu中修改网卡IP的三种实现方法

    在Ubuntu中修改网卡IP的三种实现方法

    在 Ubuntu 中修改网卡 IP 地址可以通过以下方法实现,具体取决于你使用的网络管理工具(如 netplan、ifconfig/ip 命令或传统 interfaces 文件),本文给大家总结了一些常见方法,感兴趣的小伙伴跟着小编一起来看看吧
    2025-06-06

最新评论