如何解决用于合并pdf内文件夹中所有图像文件的脚本
我经常需要在 pdf 中合并很多图像。当然,我想自动化一点。 这是我需要的东西:
- 无损合并为 pdf
- 最常见图像格式的合并
- 数字的自然排序(
1.jpg
、2.jpg
和10.jpg
将按此顺序合并,而不是像1.jpg
10.jpg
2.jpg
) - 可以处理文件名中的空格
我遇到了一个 solution,它的工作原理与我需要的完全一样,但对于名称中包含空格的文件却失败了。
#!/bin/bash
convert `ls -v *.jpg *.jpeg *.JPG *.JPEG *.png *.PNG *.gif *.GIF *.tiff *.TIFF *.webp *.WEBP *.bmp *.BMP` compilation_images.pdf
在 shell 脚本方面,我是一个完全的菜鸟,所以如果我没有看到一个简单的解决方案,我提前道歉,但我自己找不到任何解决方案。
感谢您的帮助。
解决方法
Trying to parse ls
is wrong,正如您所发现的。假设您使用的是 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
它使用将文件名与空字符分隔的常见技巧,以便在使用排序的文件名填充 bash
数组时安全地处理空格。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。