直接使用解压后的文件作为输入

直接使用解压后的文件作为输入

假设我有一个 *.zip 文件,并且想要将解压后的文件(更准确地说是文件名)直接用作终端中另一个命令的输入。如何实现?

例如:
- 我有一个包含多个 pdf 文件的 zip 文件
- 我想要将 pdf 文件合并为一个,例如使用 ghostscript

gs -sDEVICE=pdfwriter -sOutputFile=out.pdf <pdf-files from zip>

答案1

从 zip 文件中附加/连接 .pdf 文件:

$ > out.pdf; xargs -a <(zipinfo -1 in.zip) -I {} \
  sh -c 'mv out.pdf tmp.pdf; unzip -p in.zip "$1" | \
  gs -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -o out.pdf tmp.pdf -' _ {}

使用 fuse-zip:

$ mkdir -p zip && fuse-zip -r in.zip zip && \
  gs -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -o out.pdf zip/* && fusermount -u zip

相关内容