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

fish/bash中ls+pdfinfo命令获取PDF信息报错,求解决方法

问题分析与解决方案

你的命令报错核心原因有两个:一是没有限定只筛选PDF文件,导致最新修改的非PDF文件被传给pdfinfo;二是未处理含空格/特殊字符的文件名,xargs会错误拆分文件名,让pdfinfo读取无效内容。

下面给出几种跨shell(bash/fish通用)的修复方案:

方案1:限定ls只处理PDF文件并兼容特殊文件名

# bash/zsh
ls -1t *.pdf | head -n1 | xargs -d '\n' pdfinfo

# fish
ls -1t *.pdf | head -n1 | xargs -0 pdfinfo
  • *.pdf仅匹配当前目录下的PDF文件,避免非PDF文件被传入
  • xargs -d '\n'(bash)或xargs -0(fish)强制按换行符拆分输入,确保完整传递含空格/特殊字符的文件名

方案2:用find命令更可靠(推荐)

ls处理特殊文件名时容易出问题,find是更稳妥的选择:

find . -maxdepth 1 -type f -name "*.pdf" -printf "%T@ %p\n" | sort -nr | head -n1 | cut -d' ' -f2- | xargs pdfinfo

各参数作用:

  • -maxdepth 1:仅搜索当前目录,不递归子文件夹
  • -type f:只匹配文件,排除目录
  • -printf "%T@ %p\n":输出文件的修改时间戳(精确到秒)和完整路径
  • sort -nr:按时间戳倒序排序,最新修改的文件排在最前
  • cut -d' ' -f2-:提取文件名部分,去掉前面的时间戳

排查验证

如果执行后仍报错,可分步排查:

  1. 单独执行ls -1t *.pdf | head -n1,确认输出是你预期的PDF文件
  2. 手动执行pdfinfo "文件名",验证文件本身是否损坏

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 13:35:19