Домашня » як » Пошук зображень PNG більшого розміру, ніж x пікселів за допомогою оболонки Linux

    Пошук зображень PNG більшого розміру, ніж x пікселів за допомогою оболонки Linux

    Коли ви намагаєтеся працювати над зміною дизайну вашого сайту, ви повинні бути стурбовані шириною зображень у вашому вмісті статті. У мене є загальновідомі великі скріншоти на більшості статей, які я написав, так що якщо я хочу збільшити бічну панель, дуже важливо з'ясувати, які фотографії будуть занадто широкими, щоб вмістити їх у новий дизайн.

    Оскільки я програміст, мені було б легко написати невелику програму, щоб зробити це, але це змусило мене почати думати ... чому я не можу це зробити на командному рядку Linux??

    Перше, що я зрозумів, це те, що зображення PNG показують дані розміру, коли ви запускаєте на них команду "file":

    $ file image3.png
    image3.png: дані зображення PNG, 613 x 657, 8-бітний / кольоровий RGBA, без чергування

    Дуже корисно, оскільки 99% зображення на цьому сайті розміщено у форматі PNG. Тепер, щоб передати його у цикл для всіх файлів у моєму каталозі завантаження:

    $ для f в * .png; зробіть файл $ f;

    image.png: дані зображення PNG, 631 x 185, 8-бітний / кольоровий RGBA, без чергування
    image1.png: дані зображення PNG, 631 x 96, 8-бітний / кольоровий RGBA, без чергування
    image10.png: дані зображення PNG, 375 x 395, 8-бітний / кольоровий RGBA, без чергування
    image11.png: PNG-дані зображення, 484 x 241, 8-бітний / кольоровий RGBA, без чергування
    -відрубаний-

    Це більш корисно, але я повинен витягнути дані в Excel або подібну програму для сортування даних, тому я вирішив використовувати команду linux "cut", щоб витягнути лише колонку ширини..

    Ви помітите, що параметр -f5 повідомляє про те, що вирізати буде прийнято п'ятий стовпець, а -d пробіл після того, як він розкаже, щоб використовувати пробіл як роздільник. Косою рисою є символ, що вказує оболонці використовувати простір як символ, а не як пробіл.

    $ для f в * .png; зробіть файл $ f | cut -f5 -d \ t

    631
    631
    375
    484
    -відрубаний-

    Не зовсім корисний результат, чи не так? Давайте проштовхнемо це через оператор bash if, а потім покажемо тільки висновок файлової команди, коли ширина перевищує 600 пікселів.

    Зверніть увагу на позначки "(backtick) навколо файлу $ f | cut… ”, які вказують, що команди всередині 'будуть оброблені як єдиний висновок і подаються в оператор if, де ми використовуємо -gt (більше, ніж). Також зверніть увагу, що вам потрібні пробіли навколо обох сторін дужок []

    для f в * .png; робити, якщо ['file $ f | cut -f5 -d -gt 600]; потім файл $ f; fi;

    image.png: дані зображення PNG, 631 x 185, 8-бітний / кольоровий RGBA, без чергування
    image1.png: дані зображення PNG, 631 x 96, 8-бітний / кольоровий RGBA, без чергування
    image17.png: PNG-дані зображення, 638 x 340, 8-бітний / кольоровий RGBA, без чергування
    image18.png: дані зображення PNG, 608 x 448, 8-бітний / кольоровий RGBA, без чергування
    -відрубаний-

    Тепер у нас є список всіх файлів шириною понад 600 пікселів. Ви можете налаштувати "файл $ f" в кінці, щоб просто відлучити імена файлів, якщо вам потрібно скопіювати або перемістити їх в інше місце:

    для f в * .png; робити, якщо ['file $ f | cut -f5 -d -gt 600]; потім echo $ f; fi; зроблено

    image.png
    image1.png
    image17.png
    image18.png
    -відрубаний-

    Оболонка Linux неймовірно потужна! Це рішення не є практичним для всіх, але добре знати, як працювати з оболонкою, щоб ви могли виконати цей тип завдань, коли вам потрібно.