mercredi 23 mai 2012

Hledání PNG obrázky větší než x pixelů Prostřednictvím Linux Shell

Když se snažíte pracovat na změně designu svých webových stránek, musíte se soustředit na šířku obrázky v obsahu článku. Mám notoricky velkých obrazovek na většinu článků jsem napsal, takže pokud chci zvýšit postranního panelu je důležité zjistit, které obrázky se chystáte být příliš široká, aby se vešly do nového designu.

Vzhledem k tomu, že jsem programátor, bylo by to pro mě lehké psát malá aplikace, jak toho dosáhnout, ale to mě přemýšlet ... Proč si nemohu udělat na Linux příkazového řádku?

První věc, kterou jsem přišel na to, bylo to, že PNG obrázky zobrazovat velikosti dat při spuštění "Soubor" příkaz je:

$ File image3.png
image3.png: PNG obrazových dat, 613 x 657, 8-bit/color RGBA, neprokládaný

Velmi užitečné, protože 99% obrazu na této stránce jsou ve formátu PNG. Takže teď se hodit ve smyčce pro všechny soubory v adresáři My vkládat

$ Pro F *. png, do souboru $ f, provádí

image.png: PNG obrazových dat, 631 x 185, 8-bit/color RGBA, neprokládaný
image1.png: PNG obrazových dat, 631 x 96, 8-bit/color RGBA, neprokládaný
image10.png: PNG obrazových dat, 375 x 395, 8-bit/color RGBA, neprokládaný
image11.png: PNG obrazových dat, 484 x 241, 8-bit/color RGBA, neprokládaný
-snipped-

To je užitečné, ale budu muset vytáhnout data do Excelu nebo podobné aplikace, aby třídit data, tak jsem se rozhodl používat Linux "cut" příkaz vytáhnout jen šířku sloupce.

Určitě jste si všimli, f5 parametr říká řez, aby se pátý sloupec a-d s mezerou po říká řez využít prostor jako oddělovač. Lomítko znak je znak escape říct shell využít prostor jako znak a ne jako mezery.

$ Pro F *. png, do souboru $ f | cut-f5-d ; udělat

631
631
375
484
-snipped-

Ne tak docela užitečný výkon, že? Pojďme se tlačit, že přes bash if, a to pouze zobrazit výstup příkazu souboru, když šířka je větší než 600 pixelů.

Všimněte si, že `(backtick) značek kolem" Soubor $ f | cut ... " části, které ukazují, že příkazy uvnitř `budou zpracovány jako jeden výstup a vrací se do if, kde používáme-gt (větší než). Také si všimněte, že je třeba prostor kolem obou stranách závorek []

pro F *. png, dělat, když se [`souboru $ f | cut-f5-d `-gt 600], a pak soubor $ f, fi, provádí

image.png: PNG obrazových dat, 631 x 185, 8-bit/color RGBA, neprokládaný
image1.png: PNG obrazových dat, 631 x 96, 8-bit/color RGBA, neprokládaný
image17.png: PNG obrazových dat, 638 x 340, 8-bit/color RGBA, neprokládaný
image18.png: PNG obrazových dat, 608 x 448, 8-bit/color RGBA, neprokládaný
-snipped-

Nyní máme seznam všech souborů větší než 600 pixelů. Dalo by se nastavit "Soubor $ f" na konci jen echo z souborů Pokud potřebujete zkopírovat nebo přesunout je někde jinde:

pro F *. png, dělat, když se [`souboru $ f | cut-f5-d `-gt 600] then echo $ f, fi, provádí

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

Linux shell je neuvěřitelně silný! Toto řešení není příliš praktické pro každého, ale je dobré vědět, jak pracovat s shell, takže můžete provést tento typ úloh, když potřebujete.

Aucun commentaire:

Enregistrer un commentaire