Hledání snímků PNG větší než pixelů skrze prostředí Linux Shell
Když se snažíte pracovat na změně designu svých webových stránek, musíte se zabývat šířkou obrázků v obsahu článku. Mám notoricky velké obrazovky na většině článků, které jsem napsal, takže pokud chci zvýšit postranní panel, je důležité zjistit, které obrázky budou příliš široké, aby se vešly do nového designu.
Jelikož jsem programátor, bylo by pro mě snadné napsat malou žádost, abych to udělala, ale přiměla mě začít myslet ... proč to nemohu udělat na příkazovém řádku Linuxu?
První věc, kterou jsem zjistil, bylo, že obrázky PNG zobrazují data velikosti, když na nich spustíte příkaz "soubor":
$ file image3.png
image3.png: obrazová data PNG, 613 x 657, 8bitová / barevná RGBA, nepřekládaná
Velmi užitečné, protože 99% obrázku na této stránce je ve formátu PNG. Takže teď ho hodíte do smyčky pro všechny soubory v adresáři pro nahrávání:
$ pro f v * .png; do souboru $ f; hotovo
image.png: obrazová data PNG, 631 x 185, 8bitová / barevná RGBA, nepřekládaná
image1.png: obrazová data PNG, 631 x 96, 8bitová / barevná RGBA, nepřekládaná
image10.png: obrazová data PNG, 375 x 395, 8bitová / barevná RGBA, nepřekládaná
image11.png: obrazová data PNG, 484 x 241, 8bitová / barevná RGBA, nepřekládaná
-zaškrtnuto-
To je mnohem užitečnější, ale musím vytáhnout data do aplikace Excel nebo podobnou aplikaci, abych uspořádal data, takže jsem se rozhodl použít příkaz linux "cut" pro vytažení pouze sloupce šířky.
Všimnete si, že parametr -f5 řekne řez, aby vzal pátý sloupec, a -d \ s mezerou poté, co řekne řez použít mezera jako mezera. Lomítkem \ character je znak úniku, který řekne shellu, že použije místo jako znak a ne jako mezery.
$ pro f v * .png; do souboru $ f | cut -f5 -d \; hotovo
631
631
375
484
-zaškrtnuto-
Není to zcela užitečný výstup, že? Vytiskneme to pomocí příkazu bash if a zobrazíme pouze výstup příkazu souboru, když je šířka větší než 600 pixelů.
Všimněte si značek '(backtick) kolem souboru $ f | cut ... ", což znamená, že příkazy uvnitř 'budou zpracovávány jako jeden výstup a budou vloženy do příkazu if, kde použijeme hodnotu -gt (větší než). Nezapomeňte, že potřebujete místa kolem obou stran hranatých závorek []
pro f v * .png; dělat pokud ['soubor $ f | řez -f5 -d \ '-gt 600]; pak soubor $ f; fi; done
image.png: obrazová data PNG, 631 x 185, 8bitová / barevná RGBA, nepřekládaná
image1.png: obrazová data PNG, 631 x 96, 8bitová / barevná RGBA, nepřekládaná
image17.png: Obrazová data PNG, 638 x 340, 8bitová / barevná RGBA, nepřekládaná
image18.png: obrazová data PNG, 608 x 448, 8bitová / barevná RGBA, nepřekládaná
-zaškrtnuto-
Nyní máme seznam všech souborů o šířce větší než 600 pixelů. Můžete nastavit "soubor $ f" na konci, jen aby jste ozvali názvy souborů, pokud potřebujete kopírovat nebo přesunout někde jinde:
pro f v * .png; dělat pokud ['soubor $ f | řez -f5 -d \ '-gt 600]; pak echo $ f; fi; done
image.png
image1.png
image17.png
image18.png
-zaškrtnuto-
Linux shell je neuvěřitelně silný! Toto řešení není pro každého prakticky praktické, ale je dobré vědět, jak pracovat se skořápkou, abyste mohli tento typ práce splnit, když potřebujete.