Пошук зображень 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 неймовірно потужна! Це рішення не є практичним для всіх, але добре знати, як працювати з оболонкою, щоб ви могли виконати цей тип завдань, коли вам потрібно.