Я немного новичок в сценариях оболочки и изо всех сил пытаюсь получить из команды только ту информацию, которая мне нужна.
Я выполняю этот скрипт:
#!/bin/bash
myfunction(){
find . -name '*' -exec file {} \; | grep "image"
}
myfunction
По сути, мне нужен список имен изображений в моем каталоге и данные об их разрешении, но я получаю много данных это бесполезно для меня:
./image222s.jpeg: JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, baseline, precision 8, 554x554, components 3
./fruta-png.png: PNG image data, 1400 x 1501, 8-bit/color RGBA, non-interlaced
./ddd.jpeg: JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, baseline, precision 8, 540x568, components 3
./images.jpeg: JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, baseline, precision 8, 452x678, components 3
Я хотел бы знать, как я могу уменьшить вывод только до имени файла и его разрешения. Что-то вроде:
image.jpeg: 452x678
image222.jpeg: 554x554
Спасибо!
Если можно использовать identify
инструмент от imagemagick
, можно передать a -format
представьте в виде строки, чтобы только распечатать необходимую информацию:
Установка imagemagick
при необходимости:
sudo apt-get install imagemagick
Затем выполненный:
find . -type f -exec identify -format "%i: %P\n" {} \; 2>/dev/null
(или +
вместо \;
который будет быстрее, но распечатает только в конце).
Если у Вас есть много нефайлов изображений, соответствующих Вашему find
, Вы могли бы хотеть отфильтровать их сначала потому что file
будет быстрее, чем identify
:
find . -type f -exec sh -c 'file "$1" | grep -q image' find-sh {} \; -exec identify -format '%i: %P\n' {} \;
Отметьте, это file
мог бы отфильтровать некоторые форматы файлов, которые это не знает о, это identify
мог сделать, например, НЕОБРАБОТАННЫЕ изображения.