1

Как получить подробную информацию об изображениях из всех папок и подпапок с помощью ImageMagick в этом формате.

file-name file-location file-format size width height

PS - Я прочитал эту страницу http://www.imagemagick.org/script/escape.php, но не могу найти, как получить путь к файлу и как включить файлы в подпапки.

2 ответа2

0

Я уверен, что ImageMagick сам по себе не будет работать рекурсивно. Вам нужно будет написать скрипт / программу для работы с вашей структурой каталогов и вызывать ее один раз для каждого файла, который вы хотите проверить.

0

Следующая команда вернет информацию, которую вы ищете:

  identify -format "%f %d %m %b %w %h\n" ./* ./*/*
  1. Экранирующая последовательность для файлового каталога: %d .
  2. Чтобы включить все файлы в текущую папку, используйте ./* (подстановочный знак оболочки).
  3. Чтобы включить все файлы во все подпапки, используйте ./*/* (подстановочные знаки оболочки).

(Вы не сказали, в какой операционной системе вы находитесь. Вышеуказанное будет работать для Linux, Unix и Mac OS X. Для Windows используйте .\*.* и .\*.*\*.* как джокеры.)

Внимание! Если в ваших папках есть файлы без изображений или документы PDF, эта команда может выполняться довольно долго. Файлы, не относящиеся к изображениям, выдают сообщение об ошибке, подобное

identify: no decode delegate for this image format `EXE' @ error/constitute.c/ReadImage/501.

Этого можно избежать, перенаправив все сообщения об ошибках в /dev/null .

Так что может быть лучше использовать этот вариант:

 identify                                   \
   -format "%f %d %m %b %w %h\n"            \
    *.{jpg,jpeg,JPG,png,tif,tiff,ppm,gif}   \
    */*.{jpg,JPG,jpeg,png,tif,tiff,ppm,gif} \
   2>/dev/null

Вот пример из Mac OS X:

delta.jpg #12649876 JPEG 17441B 307 205
CMYK_separation_–_maximum_black.jpg #21270389 JPEG 1453360B 1600 4780
HFnCz.jpg #21270389 JPEG 356748B 1600 1195
combined.jpg #21270389 JPEG 528221B 1600 1195
res.jpg #26408022 JPEG 57546B 603 300
red-500x2000.jpg #26951336 JPEG 6288B 500 2000
resized-red-2000x2000.jpg #26951336 JPEG 7430B 1000 1000
big-edge-25.jpg #27290574 JPEG 98916B 1024 288
big.jpg #27290574 JPEG 19216B 1024 576
double.jpg #27290574 JPEG 35076B 480 270
small.jpg #27290574 JPEG 20716B 720 404

(Да, я выполнил эту команду в каталоге с подкаталогами с именами #27290574 , #26951336 и аналогичными ....)

Возможно, вы захотите, чтобы вывод выглядел более как таблица. Для этого передайте результаты через column -t . Попробуйте это тогда:

 identify                                   \
   -format "%f %d %m %b %w %h\n"            \
    *.{jpg,jpeg,JPG,png,tif,tiff,ppm,gif}   \
    */*.{jpg,JPG,jpeg,png,tif,tiff,ppm,gif} \
   2>/dev/null  |  column -t

Результат в моем случае:

delta.jpg                            #12649876  JPEG  17441B    307   205
CMYK_separation_–_maximum_black.jpg  #21270389  JPEG  1453360B  1600  4780
HFnCz.jpg                            #21270389  JPEG  356748B   1600  1195
combined.jpg                         #21270389  JPEG  528221B   1600  1195
res.jpg                              #26408022  JPEG  57546B    603   300
red-500x2000.jpg                     #26951336  JPEG  6288B     500   2000
resized-red-2000x2000.jpg            #26951336  JPEG  7430B     1000  1000
big-edge-25.jpg                      #27290574  JPEG  98916B    1024  288
big.jpg                              #27290574  JPEG  19216B    1024  576
double.jpg                           #27290574  JPEG  35076B    480   270
small.jpg                            #27290574  JPEG  20716B    720   404

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .