对于我的一个课程,我需要保存一堆来自模拟器的内存转储和汇编列表。教授建议使用enscript
将文件转换为.ps
,然后使用ps2pdf
将文件转换为.pdf
。当我需要执行10个以上的文件时,这可能会很麻烦。有没有一种有效的方法可以使用一个ps2pdf
命令(可能还可以使用enscript
来执行此操作)?
我知道通配符存在,并且我尝试使用它们。我在弄清楚如何在ps2pdf
中使用它们时遇到了麻烦。我尝试过的一件事是ps2pdf *.ps *.pdf
,但这没用。
我正在寻找的是一种通过几个快速命令将所有文件转换为.ps
然后转换为.pdf
的方法,这样我就可以将它们压缩并scp
我的本地打印机。
答案 0 :(得分:2)
for f in *.ps; do
ps2pdf "$f" "${f%.*}.pdf"
done
答案 1 :(得分:0)
在您展示如何命名汇编程序和内存转储以及如何使用enscript
将它们转换为Postscript文件之前,我只能向您展示将Postscript文件转换为PDF的方法。
恕我直言,如果您有许多Postscript文件可转换为PDF,则应使用 GNU Parallel 并快速,轻松地完成所有操作,如下所示:
parallel --dry-run ps2pdf {} {.}.pdf ::: *.ps
示例输出
ps2pdf a.ps a.pdf
ps2pdf b.ps b.pdf
如果您展示了汇编文件和转储文件的命名方式,那么我可以向您展示实现目标的一种更好的方法-也许您可以定义一个函数或脚本,以并行方式很好地完成所有工作,而几乎不需要打字。 ..
答案 2 :(得分:0)
find *.ps -maxdepth 0 -type f | xargs -I{} sh -c 'ps2pdf "$1" "${1%.ps}.pdf"' -- {}
.ps
文件的子目录时,才需要获取以-type f
结尾的文件和常规文件-maxdepth 0
,.ps
受到影响。{}
,--
传递,以防止进一步的选项处理。'...'
中执行字符串,$ 1将保存文件名,因为我们将其作为第一个参数传递给它。${1%.ps}.pdf
将从文件名中删除.ps
扩展名,并将.pdf
添加到文件名。您没有提供所用enscript
的示例,所以我不能肯定地说,这是否行得通。