Classifique jpg de acordo com a data de criação e converta para pdf único

2

Em um Mac, como posso, por meio do terminal, classificar 2400 jpg de acordo com a data de criação (ou seja, stat -f %SB ) e convertê-los nessa ordem em um pdf?

E se um jpg tiver sido criado hoje às 23:10 e um segundo pouco depois, no mesmo minuto, às 23:10? Há segundos na data de criação, que podem ser levados em conta?

    
por Til Hund 21.06.2017 / 23:10

2 respostas

2

Depende do sistema de arquivos. Por exemplo, no meu host, estou usando o quarto sistema de arquivos estendido (ext4) e stat reporta assim para arquivos:

$ 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: -

Assim, você pode usar o horário da última modificação, pois criar tempo é algo incorreto .

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

Esta construção um pouco complicada lhe dará uma lista de arquivos em ordem pela hora da última modificação (desde que você não tenha arquivos com | em seus nomes).

Depois de ter revisado essa lista, você pode usar a ferramenta convert do Imagemagick para montar o PDF:

convert <<list of files>> outputfile.pdf 

Ou, para fazer tudo de uma vez:

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

Instale o ImageMagick. Supondo que as imagens JPG estão em ~/images e os nomes dos arquivos não contêm espaços (nem nenhum de \[*? ) e você tem um diretório ~/combined :

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

ou

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

Se as imagens não forem do mesmo tamanho, você receberá avisos. -append combina imagens de cima para baixo. Mude para +append e as imagens serão combinadas da esquerda para a direita.

Tempo: Embora ls -l mostre o tempo até a hora: minuto, o Linux controla os tempos de acesso, modificação e idade / mudança até o nano segundo que acredito. Então classificar por ls -tr é responsável por frações de segundos iguais.

    
por 21.06.2017 / 23:37