У меня есть изображение с именем a.jpg. Я использую «средство просмотра изображений на основе feh - imlib2», чтобы получить информацию об измерении изображения. Я использую команду

feh -l a.jpg

И результат

NUM FORMAT  WIDTH   HEIGHT  PIXELS  SIZE(bytes) ALPHA   FILENAME
1   jpeg    1280    960     1228800 91319       -       a.jpg

Теперь в моем каталоге около 160 000 изображений, и я хотел бы экспортировать эти размеры изображения в текст. Команда, которую я использую:

feh -l * > dimension.txt

Но когда я делаю, он говорит:

bash: /usr/bin/feh: Argument list too long

Кто-нибудь знает, что такое правильная команда?

1 ответ1

1
find . -type f -print0 | xargs -0 feh -l > dimension.txt

find генерирует имена файлов для всех файлов в subdir (и также рекурсивно, если в этом есть проблема, добавьте -maxdepth 1 к команде find), она отправляет их как завершенные байтовыми данными ZERO в xargs. Мы делаем это, чтобы иметь возможность правильно обрабатывать имена файлов с пробелами (и другим мусором).

xargs собирает имена, помещая как можно больше в каждую командную строку, используемую для запуска feh. Он перезапускает командную строку, пока не будут использованы все имена.

Существует также программа identify из пакета imagemagick он делает то же самое , как feh -l команды, показывая размеры. Использование этого большого количества файлов будет аналогичным, заменив feh -l в команде xargs .

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