Сортировка jpg в соответствии с датой создания и конвертирование в одиночный pdf

На Mac, как я могу через терминал сортировать около 2400 jpg соответствии с их датой создания (т.е. stat -f %SB ) и преобразовать их в этом порядке в один PDF?

Что делать, если один jpg был создан сегодня в 11:10 вечера, а второй вскоре после этого в ту же минуту в 23:10? Есть ли секунды в дате создания, которые можно принять во внимание?

2 Solutions collect form web for “Сортировка jpg в соответствии с датой создания и конвертирование в одиночный pdf”

Это зависит от файловой системы. Например, на моем хосте я использую четвертую расширенную файловую систему (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}' 

Эта несколько громоздкая конструкция даст вам список файлов по порядку по времени последней модификации (если у вас нет файлов с | в их именах).

После того, как вы просмотрели этот список, вы можете использовать инструмент convert Imagemagick для сборки 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 

Установите 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 отслеживает доступ, изменение и возраст / изменение времени до nano секунды, я считаю. Поэтому сортировка по ls -tr составляет даже доли секунд.

  • сортировать файл по длине столбца / строки
  • Как сортировать с разделителем длиной несколько символов?
  • sort и ls - почему не заглавные буквы отсортированы в первую очередь?
  • извлечение доменных имен (имен хостов) из текстового файла
  • Самый быстрый инструмент `uniq` в linux
  • Выполнение команды для каждого файла в папке в случайном порядке
  • Как сделать обратный вывод, который уже передан из команд сортировки и вырезания
  • Как можно сортировать поле CPU команды ps?
  • Сортировка по 2 полям в ksh
  • Сортировка данных журнала с помощью bash
  • Удаление дубликатов в большом текстовом списке
  • Linux и Unix - лучшая ОС в мире.