[英]Script to merge all image files from a folder inside a pdf
我经常需要在 pdf 中合并很多图像。 自然,我想自动化一点。 这是我需要的东西:
1.jpg
、 2.jpg
和10.jpg
将按此顺序合并,而不是1.jpg
10.jpg
2.jpg
)我遇到了一个与我需要的完全一样的解决方案,但是对于名称中包含空格的文件,它会失败。
#!/bin/bash
convert `ls -v *.jpg *.jpeg *.JPG *.JPEG *.png *.PNG *.gif *.GIF *.tiff *.TIFF *.webp *.WEBP *.bmp *.BMP` compilation_images.pdf
在 shell 脚本方面,我完全是个菜鸟,所以如果我没有看到一个简单的解决方案,我提前道歉,但我自己找不到任何解决方案。
谢谢你的帮助。
正如您所发现的,尝试解析ls
是错误的。 假设您使用的是 GNU 版本的实用程序,因为 linux 标记通常暗示,请尝试以下操作:
#!/usr/bin/env bash
# Turn on case-insensitive globs and make ones that
# don't match anything expand to nothing
shopt -s nocaseglob nullglob
readarray -d '' -t images < <(printf "%s\0" *.jpg *.jpeg *.png *.gif *.tiff *.webp *.bmp | sort -Vz)
convert "${images[@]}" compilation_images.pdf
它使用用 nul 字符分隔文件名的常见技巧,以便在使用排序的文件名填充bash
数组时安全地处理空格。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.