Назад | Перейти на главную страницу

найти количество изображений в каталоге

Я хотел узнать количество файлов изображений в каталоге. В итоге я использовал это:

find . -type f  -exec file {} \; | grep -c -i 'image'

Это кажется неэффективным способом сделать это. Я мог придумать другой способ сделать это - использовать оператор OR, но я не мог понять из справочной страницы, как это можно сделать.

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

Если вы хотите искать изображения по расширению, вы можете использовать следующую команду:

find -type f -name *.gif -o -name *.jpg -o -name *.bmp

Конечно, вам нужно перечислить все интересующие вас расширения.

Чтобы получить счет, вы можете добавить | wc -l.

Вы можете повысить эффективность, используя \+ вместо того \;. Разница здесь в том, что \+ передает все найденные файлы на однократное выполнение file где \; выполняет file один раз для каждого найденного файла.

find . -type f  -exec file {} \+ | grep -c -i 'image'

Вы столкнетесь с проблемами, если найдете больше файлов, чем file можно принимать в качестве аргументов. Вы можете пропустить это через xargs с --max-args вариант, если это так.

если вы хотите найти файлы по mime-типу файла в данном случае «изображение», вам понадобится следующая команда

   find . -type f -print0 | xargs -0 file -i | grep -i image | wc -l