Kotisivu » miten » PNG-kuvien etsiminen suuremmaksi kuin x pikseliä Linux-kuoren kautta

    PNG-kuvien etsiminen suuremmaksi kuin x pikseliä Linux-kuoren kautta

    Kun yrität muuttaa verkkosivustosi suunnittelua, sinun on huolehdittava artikkelin sisällön leveydestä. Minulla on tunnetusti suuria kuvakaappauksia useimmista kirjoitetuista artikkeleista, joten jos haluan lisätä sivupalkkia, on tärkeää selvittää, mitkä kuvat ovat liian leveitä, jotta ne sopivat uuteen muotoiluun.

    Koska olen ohjelmoija, minulla olisi helppo kirjoittaa pieni sovellus tähän, mutta se sai minut ajattelemaan… miksi en voi tehdä tätä Linux-komentorivillä?

    Ensimmäinen asia, jonka tajusin, oli se, että PNG-kuvat näyttävät koon tiedot, kun käytät tiedostojen komentoa:

    $ file image3.png
    image3.png: PNG-kuvadata, 613 x 657, 8-bittinen / värillinen RGBA, ei-lomitettu

    Erittäin hyödyllinen, koska 99% tämän sivuston kuvasta on PNG-muodossa. Joten nyt heittää se silmukkaan kaikkiin lataushakemiston tiedostoihin:

    $ for f * .png; tee tiedosto $ f;

    image.png: PNG-kuvatiedot, 631 x 185, 8-bittinen / värillinen RGBA, ei-lomitettu
    image1.png: PNG-kuvatiedot, 631 x 96, 8-bittinen / värillinen RGBA, ei-lomitettu
    image10.png: PNG-kuvatiedot, 375 x 395, 8-bittinen / värillinen RGBA, ei-lomitettu
    image11.png: PNG-kuvadata, 484 x 241, 8-bittinen / värillinen RGBA, ei-lomitettu
    -snipped-

    Tämä on hyödyllisempää, mutta datan lajittelemiseksi minun pitäisi vetää tiedot Exceliin tai vastaavaan sovellukseen, joten päätin käyttää linux “cut” -komentoa vetämään vain leveyssarakkeen.

    Huomautat, että -f5-parametri kertoo leikatun viidennen sarakkeen, ja -d: n välilyönnin jälkeen, kun se kertoo leikkauksen käyttää välilyöntiä. Slash-merkki on evakuointi-merkki, joka kertoo kuorelle käyttää tilaa merkkinä eikä välilyönninä.

    $ f: lle * .png: ssä, tee tiedosto $ f | cut -f5 -d;

    631
    631
    375
    484
    -snipped-

    Eikö se ole täysin hyödyllinen tuotos? Työnnä se bash if -lausuman kautta ja näytä vain tiedoston komento, kun leveys on suurempi kuin 600 pikseliä.

    Huomaa ”(backtick) -merkit” tiedoston $ f | ympärillä leikkaus… ”, joka osoittaa, että komennot 'käsitellään' yksittäisenä lähdönä ja syötetään if-lausekkeeseen, jossa käytämme -gt (suurempi kuin). Huomaa myös, että tarvitset välilyöntejä sulkujen molemmin puolin []

    f: lle * .png: ssa, tee jos ['tiedosto $ f | cut -f5 -d '-gt 600]; sitten tiedosto $ f; fi; valmis

    image.png: PNG-kuvatiedot, 631 x 185, 8-bittinen / värillinen RGBA, ei-lomitettu
    image1.png: PNG-kuvatiedot, 631 x 96, 8-bittinen / värillinen RGBA, ei-lomitettu
    image17.png: PNG-kuvatiedot, 638 x 340, 8-bittinen / värillinen RGBA, ei-lomitettu
    image18.png: PNG-kuvatiedot, 608 x 448, 8-bittinen / värillinen RGBA, ei-lomitettu
    -snipped-

    Nyt meillä on luettelo kaikista yli 600 pikselin suuruisista tiedostoista. Voit muokata tiedoston tiedostoa f vain lopettamaan tiedostonimet, jos haluat kopioida tai siirtää niitä muualle:

    f: lle * .png: ssa, tee jos ['tiedosto $ f | cut -f5 -d '-gt 600]; sitten echo $ f; fi; valmis

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

    Linux-kuori on uskomattoman voimakas! Tämä ratkaisu ei ole todella käytännöllinen kaikille, mutta on hyvä tietää, miten työskennellä kuoren kanssa, jotta voit suorittaa tämäntyyppisen tehtävän, kun tarvitset.