If-Koubou

Намиране на PNG изображения, по-големи от x пиксела, чрез Linux Shell

Намиране на PNG изображения, по-големи от x пиксела, чрез Linux Shell (Как да)

Когато се опитвате да промените дизайна на уебсайта си, трябва да се занимавате с ширината на снимките в съдържанието на статията. Имам известни екрани за повечето статии, които съм написал, така че ако искам да увелича страничната лента, е важно да разбера кои снимки ще бъдат твърде широки, за да се впишат в новия дизайн.

Тъй като съм програмист, би било лесно за мен да напиша малко заявление за това, но това ме накара да започна да мисля ... защо не мога да направя това на Linux командния ред?

Първото нещо, което разбрах, е, че PNG изображенията показват данните за размера, когато стартирате командата "file" върху тях:

$ file image3.png
image3.png: Данни за изображенията с PNG, 613 x 657, 8-битова / цветна RGBA, непроменени

Много полезно, тъй като 99% от снимката на този сайт е във формат PNG. Сега, за да го хвърлите в цикъл за всички файлове в моята качи камера:

$ for 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, несвързани
-snipped-

Това е по-полезно, но ще трябва да изтегля данните в Excel или подобно приложение, за да сортирам данните, затова реших да използвам командата "cut" на Linux, за да извадя само ширината на колоната.

Ще забележите, че параметърът -f5 казва изрязване, за да вземе петата колона, а -d \ с интервал, след като е казал нарязаното да използва интервал като разделител. Знакът "наклонена черта" е евакуационен символ, който казва на черупката да използва пространството като знак, а не като празно пространство.

$ for f в * .png; направете файл $ f | cut -f5 -d \; готов

631
631
375
484
-snipped-

Не е напълно полезно изход, нали? Нека да прокараме това чрез изречение bash if и след това да покажем само изхода на командата за файла, когато ширината е по-голяма от 600 пиксела.

Забележете "(задната) маркировка около файла $ f | cut ... ", което показва, че командите вътре в 'ще бъдат обработени като единичен изход и ще бъдат заредени в инструкцията if, където използваме -gt (по-голямо от). Също така имайте предвид, че се нуждаете от интервали от двете страни на скобите []

за f в * .png; направи, ако ['файл $ f | изрязан -f5 -d \ '-gt 600]; след това файл $ f; fi; done

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, несвързани
-snipped-

Сега имаме списък с всички файлове, широки от 600 пиксела. Можете да настроите "файла $ f" в края, за да отговорите на имената на файловете, ако е необходимо да ги копирате или преместите някъде другаде:

за f в * .png; направи, ако ['файл $ f | изрязан -f5 -d \ '-gt 600]; след това ехо $ f; fi; done

image.png
image1.png
image17.png
image18.png
-snipped-

Linux черупката е невероятно мощен! Това решение не е практично за всички, но е добре да знаете как да работите с черупката, за да можете да изпълнявате този тип задачи, когато имате нужда.