Bash:如何像输入文件一样命名 gs 输出文件,但使用不同的文件扩展名?

标签 bash shell batch-processing ghostscript

我在一个目录中有很多 postscript (.ps) 文件,其名称例如

cct@TOP_VMAIN_AND_3V3_SMPS,smps_ota,schematic.ps 

我想批量转换为 .png 文件

我已经有以下命令(使用 bash):

gs -dSAFER -dBATCH -sDEVICE=pnggray -dTextAlphaBits=4 -r300 -sOutputFile=out-%d.png *.ps

这没问题,但是,显然,它只输出 out-1.pngout-2.png 等等,这意味着我不知道哪个 .png 来自哪个 .ps

我想要做的是能够保留文件名,例如 那个

cct@TOP_VMAIN_AND_3V3_SMPS,smps_ota,schematic.ps 

转换为

cct@TOP_VMAIN_AND_3V3_SMPS,smps_ota,schematic.png

对于每个文件。我怎样才能做到这一点?

最佳答案

使用bash的参数扩展:

f="cct@TOP_VMAIN_AND_3V3_SMPS,smps_ota,schematic.ps"
echo "${f%.*}.png"  # Remove everything after the last dot.

关于Bash:如何像输入文件一样命名 gs 输出文件,但使用不同的文件扩展名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32904468/

相关文章:

bash - 解析 iostat 输出

python - 使用文件夹名称作为文本文件中的一列

python - 保持python脚本运行并继续bash脚本? (Mac OSX)

java - 如何将 Shell 脚本添加为 Java 项目的一部分

linux - 查找条件的文件大小

java - 如何读取 ItemReader 中的所有行并将行和文件地址返回给 ItemProcessor?

macos - 自定义终端提示颜色导致循环问题

bash - 在 BASH 中运行变量命令

batch-file - 使用 wkhtmltopdf 自动生成本地 PDF 文件名的批处理文件

python - 使用 BatchElements 进行批处理在 DirectRunner 和 DataflowRunner (GCP/Dataflow) 中的工作方式不同