根据创建日期对 jpg 进行排序并转换为单个 pdf

根据创建日期对 jpg 进行排序并转换为单个 pdf

在 Mac 上,我如何通过终端jpg根据创建日期(即stat -f %SB)对大约 2400 个文件进行排序,并按该顺序将它们转换为一个 pdf?

如果jpg今天晚上 11:10 创建了一个,并在同一分钟内晚上 11:10 创建了第二个,该怎么办?创建日期中是否有可以考虑的秒数?

答案1

这取决于文件系统。例如,在我的主机上,我使用第四个扩展文件系统(ext4),并stat因此报告文件:

$ touch foo; stat foo; rm foo
  File: 'foo'
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: fc00h/64512d    Inode: 262155      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/   ownerusername)   Gid: ( 1000/   ownerusername)
Access: 2017-06-21 14:28:16.150323827 -0700
Modify: 2017-06-21 14:28:16.150323827 -0700
Change: 2017-06-21 14:28:16.150323827 -0700
 Birth: -

所以你可以使用最后修改时间作为创造时间有点用词不当

find /path/to/images -type f -print0 -name \*.jpg | xargs -0 stat -c "%y|%n" | sort | awk -F'|' '{print $2}'

这个有点麻烦的结构将为您提供按上次修改时间排序的文件列表(前提是|您的名称中没有包含任何文件)。

一旦您查看了此列表,您就可以使用 Imagemagick 的convert工具来组合 PDF:

convert <<list of files>> outputfile.pdf 

或者,一次性完成所有操作:

convert $(find /path/to/images -type f -print0 -name \*.jpg | xargs -0 stat -c "%y|%n" | sort | awk -F'|' '{print $2}') outputfile.pdf

答案2

ImageMagick 的简单命令convert行适合我。

我用下面的命令行进行了测试(在有14个png文件的目录中),pdf文件中每页都会有一张图片。

convert  *.png out-parrot.pdf

但某些版本可能会出现问题convert

convert它按预期与Parrot 4.4 中的版本一起工作

$convert --version
Version: ImageMagick 6.9.10-23 Q16 x86_64 20190101 https://imagemagick.org

但它不适用于convertUbuntu 18.04.1 LTS 中的版本(截至2019年2月)

$ convert --version
Version: ImageMagick 6.9.7-4 Q16 x86_64 20170114 http://www.imagemagick.org

此版本“未授权”写入 pdf 文件

$ convert  *.png out-ubuntu.pdf
convert-im6.q16: not authorized `out-ubuntu.pdf' @ error/constitute.c/WriteImage/1037.

$ apt-cache policy imagemagick
imagemagick:
  Installed: 8:6.9.7.4+dfsg-16ubuntu6.4
  Candidate: 8:6.9.7.4+dfsg-16ubuntu6.4
  Version table:
 *** 8:6.9.7.4+dfsg-16ubuntu6.4 500
        500 http://se.archive.ubuntu.com/ubuntu bionic-updates/main amd64 Packages
        500 http://security.ubuntu.com/ubuntu bionic-security/main amd64 Packages
        100 /var/lib/dpkg/status
     8:6.9.7.4+dfsg-16ubuntu6 500
        500 http://se.archive.ubuntu.com/ubuntu bionic/main amd64 Packages

通过 Ubuntu 邮件列表,我得到了以下答案(由于 ImageMagick 漏洞问题,转换为 pdf 被关闭)

这是 ImageMagick 转换中的错误,特别是针对 Ubuntu 18.04 LTS,还是有意关闭转换为 pdf?

这种改变是有意为之的。看https://usn.ubuntu.com/3785-1/

谢谢,杰里米·比查

答案3

安装 ImageMagick。假设 JPG 图像位于~/images并且文件名不包含任何空格(也不包含任何\[*?)并且您有一个目录~/combined

convert -combine -append $(ls -tr ~/images/*.jpg) ~/combined/all.jpg

或者

  convert -combine -append $(ls -tr ~/images/*.jpg) ~/combined/all.pdf

如果图像大小不同,您将收到警告。-append从上到下组合图像。更改为+append,图像将从左到右合并。

时间:虽然ls -l显示时间精确到小时:分钟,但我相信 Linux 会跟踪访问、修改和年龄/更改时间,精确到纳秒。因此排序ls -tr确实需要几分之一秒的时间。

相关内容