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.