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

Mac系统zsh环境下如何批量将PDF转为保留原文件名的EPS文件

Mac zsh环境下批量PDF转EPS实现方法

你当前使用的单文件Ghostscript转换命令可直接复用,配合zsh原生文件名处理语法写循环即可实现批量转换,不需要安装任何第三方工具。

单目录下批量转换(所有PDF都在当前文件夹)

直接在存放PDF文件的目录打开终端,执行以下命令:

for pdf_file in *.pdf; do
  gs -dNOCACHE -dNOPAUSE -dBATCH -dSAFER -sDEVICE=eps2write -dEPSCrop -sOutputFile="${pdf_file:r}.eps" "$pdf_file"
done
  • 这里的${pdf_file:r}是zsh内置的文件名修饰语法,作用是自动去掉文件的.pdf后缀,拿到原始文件名,转换后的EPS文件会直接以原文件名.eps的格式保存在同目录下。
  • 所有变量都加了双引号包裹,文件名带空格、中文、特殊符号都能正常处理,不会报错。

递归处理所有子目录内的PDF

如果你的PDF分布在当前目录的多层子文件夹里,先执行一次命令开启zsh扩展通配:

setopt extended_glob

然后执行递归转换的循环命令:

for pdf_file in **/*.pdf; do
  file_path="${pdf_file:h}"
  raw_name="${pdf_file:t:r}"
  gs -dNOCACHE -dNOPAUSE -dBATCH -dSAFER -sDEVICE=eps2write -dEPSCrop -sOutputFile="${file_path}/${raw_name}.eps" "$pdf_file"
done
  • 这个命令会遍历当前目录下所有子文件夹里的PDF文件,转换后的EPS会和原PDF保存在相同目录,不会打乱原有文件结构。
  • 语法里的:h用于取文件所在的目录路径,:t用于取不带路径的纯文件名,都是zsh原生支持的语法,不需要额外依赖。

预校验建议

如果不确定文件匹配是否正确,可以先把循环里的gs命令替换成打印语句,先预览待处理的文件对应关系:

for pdf_file in *.pdf; do
  echo "待转换:$pdf_file -> ${pdf_file:r}.eps"
done

确认输出的文件名对应关系完全符合预期后,再替换回gs命令执行转换即可,避免误操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 03:01:07