Domovská » jak » Hledání snímků PNG větší než pixelů skrze prostředí Linux Shell

    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.