Вывод ответа CLI на MacOS, если выполняется один из критериев ответа

В настоящее время я использую утилиту командной строки в MacOS (Sierra), которая называется Exiftool. Существует несколько способов запуска этого интерфейса командной строки, однако, по сути, вы указываете интерфейсу файл, и он возвращает информацию о файле. Чтобы ограничить количество возвращаемой информации, вы можете просто добавить к ней аргументы.

На данный момент вот чего я пытаюсь добиться в псевдокоде: -

Запустите «exiftool» для определенного файла изображения. Если значение «Мегапиксели» > 0, возвращаются «имя файла», «Исходная дата» и «Мегапиксели».

Команда для возврата «имя файла», «Исходная дата» и «Мегапиксели» проста: -

exiftool -filename -OriginalData -Megapixels myphotograph.jpeg

Однако как мне проверить значение мегапикселей, прежде чем возвращать все три значения? Итак, по сути, я хочу запустить CLI exiftool для myphotograph.jpeg, и если значение мегапикселей (аргумент) больше 0, я хочу, чтобы он возвращал это значение и дополнительные два? Вывод в конечном итоге будет выведен в файл .csv.

Надеюсь, это имеет смысл.

Спасибо


person thefragileomen    schedule 12.12.2016    source источник


Ответы (2)


Попробуйте это:
exiftool -if '$Megapixels>1' -filename -DateTimeOriginal -Megapixels -cv FileOrDir

Я изменил его на больше 1, так как все изображения будут иметь размер больше 0, пока есть некоторые данные изображения. Например, у меня есть изображение 8x8, которое отображается как 0,000064 мегапикселя. Все, что вам нужно сделать, это изменить 1 на любое число, которым вы хотите ограничить свой выбор.

Я предполагаю, что вы на самом деле имели в виду DateTimeOriginal, а не OriginalDate или OriginalData. Exiftool распознает OriginalDate только как тег для своего собственного MIE format, где он в любом случае сопоставляется с DateTimeOriginal.

Добавьте -r, если вы хотите рекурсивно обращаться к подкаталогам.

Вы можете добавить -csv >/path/to/file.csv, если хотите напрямую сгенерировать CSV-файл. Это добавит в начале дополнительный столбец, содержащий полный исходный путь и имя файла. Вы также можете воспользоваться параметром -p, чтобы сверните свой собственный формат csv.

person StarGeek    schedule 12.12.2016

Ответ @StarGeek более элегантен и переносится на Windows, но я сделал это с awk сейчас и мог бы также поделиться им:

exiftool image.jpg | awk -F': ' '
   /^Create Date/{d=$2}
   /^Megapixels/ {m=$2}
   /^File Name/  {n=$2}
   END{ if(m>0)print n,m,d }' OFS=','

Вывод

image.jpg,8.0,2015:08:16 14:39:45.275
person Mark Setchell    schedule 12.12.2016