qidao123.com ToB IT社区-企服评测·应用市场

 找回密码
 立即注册

Linux中xargs下令和-exec下令

[复制链接]
发表于 4 天前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
Linux中xargs下令和-exec下令

我来具体先容一下 xargs 和 -exec 这两个在 Linux 中处置惩罚批量文件操纵的强大下令。
-exec 下令

-exec 是 find 下令的一部门,用于对找到的每个文件实行指定的下令。
根本语法:
  1. find [路径] [条件] -exec 命令 {} \;
  2. # 或
  3. find [路径] [条件] -exec 命令 {} +
复制代码
示例:
  1. # 查找并删除所有 .tmp 文件
  2. find . -name "*.tmp" -exec rm {} \;
  3. # 查找并更改权限
  4. find /var/log -name "*.log" -exec chmod 644 {} \;
  5. # 查找文件并统计行数(单文件处理)
  6. find . -name "*.txt" -exec wc -l {} \;
  7. # 使用 + 结尾(更高效,一次性传递多个文件)
  8. find . -name "*.jpg" -exec tar -czf archive.tar.gz {} +
复制代码
参数分析:


  • {}:体现找到的文件名
  • \;:每个文件实行一次下令
  • +:多个文件一次性通报给下令(更高效)
xargs 下令

xargs 从尺度输入读取数据,并将其转换为下令行参数。
根本语法:
  1. 命令1 | xargs [选项] 命令2
复制代码
示例:
  1. # 删除所有 .tmp 文件
  2. find . -name "*.tmp" | xargs rm
  3. # 统计所有 .txt 文件的行数
  4. find . -name "*.txt" | xargs wc -l
  5. # 处理带空格的文件名
  6. find . -name "*.md" -print0 | xargs -0 grep "TODO"
  7. # 限制每次传递的参数数量
  8. ls *.log | xargs -n 2 diff  # 每次比较两个文件
复制代码
常用选项:
  1. -n 数字     # 每次传递的参数个数
  2. -I {}       # 指定替换字符串
  3. -P 数字     # 并行执行
  4. -0          # 处理空字符分隔的输入(配合 find -print0)
复制代码
两者对比

特性-execxargs泉源find 下令的一部门独立下令服从\; 低效,+ 高效默认高效机动性只能共同 find 利用可与任何下令共同文件名处置惩罚主动处置惩罚特别字符须要 -0 选项处置惩罚特别字符并行处置惩罚不支持支持 (-P 选项)参数控制有限机动 (-n, -I 等)实用本领

1. 处置惩罚特别字符(空格、换行等)
  1. # 安全的方式
  2. find . -name "*.md" -print0 | xargs -0 rm
  3. # 等同于
  4. find . -name "*.md" -exec rm {} +
复制代码
2. 并行处置惩罚
  1. # 使用 xargs 并行压缩图片
  2. find . -name "*.png" | xargs -P 4 -I {} convert {} {}.jpg
复制代码
3. 预览将要实行的下令
  1. # 先查看会执行什么命令
  2. find . -name "*.bak" -exec echo rm {} \;
  3. # 确认无误后再执行
  4. find . -name "*.bak" -exec rm {} \;
复制代码
4. 组合利用示例
  1. # 查找过去7天修改过的 .log 文件并压缩
  2. find /var/log -name "*.log" -mtime -7 | xargs tar -czf logs.tar.gz
  3. # 在多级目录中查找并替换文本
  4. find . -type f -name "*.js" -exec grep -l "old_string" {} \; | xargs sed -i 's/old_string/new_string/g'
复制代码
5. xargs 的占位符利用
  1. # 使用 -I 指定占位符
  2. find . -name "*.txt" | xargs -I {} mv {} {}.backup
  3. # 批量下载 URL 列表
  4. cat urls.txt | xargs -n 1 -P 3 wget
复制代码
选择发起


  • 利用 -exec {} +:当只须要简朴共同 find 下令时,更简便
  • 利用 xargs:当须要更复杂的参数控制、并行处置惩罚,或要共同其他下令的输出时
  • 处置惩罚特别字符:总是利用 -print0 | xargs -0 或 -exec {} + 制止文件名标题
两者都是处置惩罚批量文件操纵的强大工具,选择哪个取决于具体需求和个人偏好。

免责声明:如果侵犯了您的权益,请联系站长及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录

QQ|手机版|qidao123.com IT社区;IT企服评测▪应用市场 ( 浙ICP备20004199|浙ICP备20004199号 )|网站地图

GMT+8, 2026-5-22 00:21 , Processed in 0.254590 second(s), 33 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表