Shell

根據創建日期對 jpg 進行排序並轉換為單個 pdf

  • February 12, 2019

在 Mac 上,如何通過終端jpg根據創建日期(即stat -f %SB)對大約 2400 進行排序,並將它們按該順序轉換為一個 pdf?

如果jpg在今天晚上 11:10 創建了一個,而在同一分鐘後不久在晚上 11:10 創建了第二個,該怎麼辦?創建日期是否有秒數,可以考慮嗎?

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

但它不適convert用於 Ubuntu 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 convert 中的一個錯誤,特別是針對 Ubuntu 18.04 LTS,還是有意關閉了轉換為 pdf? > > >

這種改變是故意的。請參閱https://usn.ubuntu.com/3785-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

引用自:https://unix.stackexchange.com/questions/372578