You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何结合find与xmllint命令实现XML文件批量去重查询?

解决方法

直接用以下命令就能完成批量查询XML节点并去重的需求:

find /path/to/directory -name "*.xml" -exec xmllint --xpath "//bundle/artifact/text()" {} \; | sort -u

为什么原命令不生效?

xmllint默认不会从标准输入读取待处理的文件名,而是需要将文件名作为命令行参数传入。你之前的管道把文件名传给xmllint时,它无法识别这是待处理文件,所以执行失败。

命令各部分说明

  • find /path/to/directory -name "*.xml":直接定位目标目录下所有XML文件,比find .再加grep更高效,避免遍历无关目录。
  • -exec xmllint --xpath "//bundle/artifact/text()" {} \;:对每个找到的XML文件执行xmllint命令,{}代表当前找到的文件名,text()用来提取节点的纯文本内容(如果不加会输出包含<artifact>标签的完整节点,不利于去重)。
  • sort -u:对所有查询结果排序,并自动去除重复项。

如果习惯用xargs,也可以用这个版本:

find /path/to/directory -name "*.xml" | xargs -I {} xmllint --xpath "//bundle/artifact/text()" {} | sort -u

内容的提问来源于stack exchange,提问作者Mandroid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 14:03:10