Početna » kako da » Pronalaženje PNG slika Veće od x piksela kroz Linux ljusku

    Pronalaženje PNG slika Veće od x piksela kroz Linux ljusku

    Kada pokušavate raditi na promjeni dizajna vaše web-lokacije, morate se brinuti o širini slika u svom članku. Dobio sam notorne velike snimke zaslona na većini članaka koje sam napisao, tako da ako želim povećati bočnu traku, važno je shvatiti koje će slike biti preširoke da bi se uklopile u novi dizajn.

    Budući da sam programer, bilo bi mi lako napisati malu aplikaciju da to učinim, ali to me natjeralo da počnem razmišljati ... zašto to ne mogu učiniti na Linux komandnoj liniji?

    Prva stvar koju sam shvatio je da PNG slike prikazuju podatke o veličini kada pokrenete naredbu "datoteka" na njima:

    $ file image3.png
    image3.png: PNG slikovni podaci, 613 x 657, 8-bitni / u boji RGBA, bez prepletanja

    Vrlo korisno jer je 99% slike na ovoj stranici u PNG formatu. Sada ga bacite u petlju za sve datoteke u mom direktoriju za prijenos:

    $ za f u * .png; učinite datoteku $ f;

    image.png: PNG slikovni podaci, 631 x 185, 8-bitni / u boji RGBA, bez preplitanja
    image1.png: PNG slikovni podaci, 631 x 96, 8-bitni / u boji RGBA, bez prepletanja
    image10.png: PNG slikovni podaci, 375 x 395, 8-bitni / u boji RGBA, bez prepletanja
    image11.png: PNG slikovni podaci, 484 x 241, 8-bitni / u boji RGBA, bez prepletanja
    -snipped-

    To je korisnije, ali morao bih povući podatke u Excel ili sličnu aplikaciju kako bih razvrstao podatke, pa sam odlučio koristiti linux "cut" naredbu za izvlačenje samo stupca širine.

    Primijetit ćete da -f5 parametar govori rez da se peti stupac, a -d razmak nakon što kaže rez koristiti prostor kao graničnik. Znak za kosu crtu je znak za bijeg koji govori ljusci da prostor koristi kao znak, a ne kao razmak.

    $ za f u * .png; napraviti datoteku $ f | cut -f5 -d \ t

    631
    631
    375
    484
    -snipped-

    Nije posve koristan izlaz, zar ne? Pustimo to kroz bash if izjavu, i onda samo pokazati izlaz naredbe datoteke kada je širina veća od 600 piksela.

    Obratite pozornost na oznake ((backtick) oko datoteke $ f | cut… ”, koji ukazuju da će naredbe unutar 'biti obrađene kao jedan izlaz i ubačene u if izraz, gdje koristimo -gt (veći od). Također imajte na umu da su vam potrebni prostori oko obje strane zagrada []

    za f u * .png; učiniti ako ['file $ f | cut -f5 -d -gt 600]; zatim datoteku $ f; fi; učinjeno

    image.png: PNG slikovni podaci, 631 x 185, 8-bitni / u boji RGBA, bez preplitanja
    image1.png: PNG slikovni podaci, 631 x 96, 8-bitni / u boji RGBA, bez prepletanja
    image17.png: PNG slikovni podaci, 638 x 340, 8-bitni / u boji RGBA, bez prepletanja
    image18.png: PNG slikovni podaci, 608 x 448, 8-bitni / u boji RGBA, bez prepletanja
    -snipped-

    Sada imamo popis svih datoteka koje su veće od 600 piksela. Možete podesiti "file $ f" na kraju kako biste samo odjekli imena datoteka ako ih trebate kopirati ili premjestiti negdje drugdje:

    za f u * .png; učiniti ako ['file $ f | cut -f5 -d -gt 600]; zatim echo $ f; fi; učinjeno

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

    Linux ljuska je nevjerojatno moćna! Ovo rješenje nije praktično za svakoga, ali dobro je znati kako raditi s ljuskom tako da možete izvršiti ovu vrstu zadatka kada trebate.