假设我有一个 *.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