You need to enable JavaScript to run this app. 如何使用shell或grep命令识别带有书签的PDF文件
优惠活动
大模型
产品
解决方案
定价
更多

如何使用shell或grep命令识别带有书签的PDF文件

识别带书签PDF的Shell实现方法

首先需要提前安装对应的PDF处理命令行工具,以下提供两种常用实现方案:

方案1:使用pdftk(准确率最高)

pdftk是专门用于PDF编辑处理的命令行工具,对书签字段的识别兼容性最好。

  • 安装方式:

    • Debian/Ubuntu 系:sudo apt install pdftk-java
    • CentOS/RHEL 系:sudo dnf install pdftk
    • macOS(Homebrew):brew install pdftk-java
  • 单文件检测命令:
    执行以下命令会直接输出对应PDF是否带书签:
    pdftk 测试文件.pdf dump_data | grep -q "BookmarkTitle" && echo "带书签" || echo "无书签"

  • 批量检测目录下所有PDF,导出无书签文件列表:
    执行后会生成待加书签PDF列表.txt,方便后续批量处理:

    for pdf in *.pdf; do
      if ! pdftk "$pdf" dump_data | grep -q "BookmarkTitle"; then
        echo "$pdf" >> 待加书签PDF列表.txt
      fi
    done
    

    如果需要遍历嵌套子目录的PDF,替换为以下写法即可:

    find . -name "*.pdf" -type f | while read pdf; do
      if ! pdftk "$pdf" dump_data | grep -q "BookmarkTitle"; then
        echo "$pdf" >> 待加书签PDF列表.txt
      fi
    done
    

方案2:使用poppler-utils(轻量,多数系统预装)

如果不想额外安装pdftk,大部分Linux发行版、macOS默认会带poppler工具集,用其中的pdfinfo也可实现识别,准确率略低于pdftk。

  • 安装方式(未预装时执行):

    • Debian/Ubuntu 系:sudo apt install poppler-utils
    • CentOS/RHEL 系:sudo dnf install poppler-utils
    • macOS(Homebrew):brew install poppler
  • 核心检测逻辑和方案1一致,仅需将判断条件替换为:
    pdfinfo -dests "$pdf" | grep -q "Name"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 23:09:01