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

如何输出同时包含多个关键词的PDF文件名称?

如何用pdfgrep筛选同时包含多个关键词的PDF文件

要找出目录中同时包含多个关键词(比如foo和bar)的PDF文件,最可靠的方式是分两次调用pdfgrep做递进筛选,或者用shell循环逐一验证,以下是具体方案:

方案1:用管道+ xargs 递进筛选

直接通过两次pdfgrep叠加,先筛选出含第一个关键词的文件,再在这些文件里找含第二个关键词的:

pdfgrep -il "foo" *.pdf | xargs pdfgrep -il "bar"

参数说明:

  • -i:忽略大小写匹配
  • -l:仅输出匹配到的文件名,不显示具体匹配内容

方案2:用Shell循环逐一验证

如果更习惯用循环逻辑,可以遍历每个PDF文件,分别检查两个关键词是否都存在:

for file in *.pdf; do
  # -q 静默模式,只返回匹配状态,不输出内容,提升效率
  if pdfgrep -qi "foo" "$file" && pdfgrep -qi "bar" "$file"; then
    echo "$file"
  fi
done

为什么你之前的方法失效?

  • 第一个命令pdfgrep --files-with-matches --ignore-case --with-filename --max-count 1 "(foo|bar)" -- *.pdf用了(foo|bar)正则,这是OR逻辑,只要文件含任一关键词就会被匹配,不符合“同时包含”的要求。
  • 第二个用前瞻断言的命令,虽然启用了单行模式(?s),但pdfgrep处理PDF时,不同页面的文本可能被分割成独立的扫描块,导致跨页面的关键词无法被正则同时捕获,所以无法匹配关键词在不同页面的文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 05:07:39