29Jun

Iskanje slik PNG večje od x pikslov Skozi Linux Shell

click fraud protection

Ko poskušate spremeniti zasnovo vašega spletnega mesta, morate biti pozorni na širino slik v vsebini članka. Na večini člankov, ki sem jih napisal, imam znane velikanske posnetke zaslona, ​​zato, če želim povečati stransko vrstico, je ključnega pomena, da ugotovimo, katere slike bodo preveč široke, da se prilegajo novemu dizajnu.

Ker sem programer, bi bilo enostavno pisati majhno aplikacijo za to, vendar sem začel razmišljati. .. zakaj tega ne morem storiti v ukazni vrstici Linux?

Prva stvar, ki sem jo ugotovil, je, da slike PNG prikazujejo podatke o velikostih, ko jih zaženete z ukazom »datoteka«:

$ file image3.png
image3.png: podatki o sliki PNG, 613 x 657, 8-bitni / barvniRGBA, neprepletena

Zelo uporabna, saj je 99% slike na tej spletni strani v formatu PNG.Torej, zdaj, da ga v koš zanima za vse datoteke v mojem mapi za nalaganje:

$ za f in *. png; storite datoteko $ f; storite

image.png: podatki o sliki PNG, 631 x 185, 8-bitni / barvniRGBA, neprepletena

instagram viewer

image1.png: podatki o sliki PNG, 631 x 96, 8-bitni / barvni RGBA, neprepleteni
image10.png: podatki o sliki PNG, 375 x 395, 8-bitni / barvni RGBA,prepletena
image11.png: podatki PNG slike, 484 x 241, 8-bitni / barvni RGBA, neprepleteni
-snipped-

To je bolj uporabno, vendar bi moral podatke potegniti v Excel ali podobno aplikacijo vda bi razvrstili podatke, zato sem se odločil, da uporabim linux "cut" ukaz, da izvlečem samo stolpec širine.

Opazili boste, da parameter -f5 pove razrez, da vzame peti stolpec, in -d \ s presledkom, ko pravi, da se razreže, da uporabi prostor kot ločilo. Znak za poševnico \ je znak za uhajanje, ki lupini pove, da uporabi prostor kot znak in ne kot presledek.

$ za f v *. png; naredi datoteko $ f | cut -f5 -d \; storjeno

631
631
375
484
-snipped-

Ni povsem uporaben izhod, kajne? Potiskajmo to skozi stavko bash if, nato pa prikaže le izhod ukaza datoteke, če je širina večja od 600 slikovnih pik.

Obvestite `(backtick) oznake okrog» datoteke $ f |cut. .. ", ki kažejo, da bodo ukazi znotraj` obdelani kot en sam izhod in vnesli v stavku if, kjer uporabljamo -gt( več kot).Upoštevajte tudi, da potrebujete presledke okoli obeh strani oklepaj []

za f in *. png; naredite, če [`file $ f |cut -f5 -d \ `-gt 600];nato datoteko $ f; fi; storjeno

image.png: podatki o sliki PNG, 631 x 185, 8-bitni / barvni RGBA, neprepleteni
image1.png: podatki o sliki PNG, 631 x 96, 8-bitni / barvni RGBA, neprepletena
image17.png: podatki o sliki PNG, 638 x 340, 8-bitni / barvni RGBA, neprepleteni
image18.png: podatki o sliki PNG, 608 x 448, 8-bitni / barvni RGBA, neprepleteni
-snipped-

Zdaj imamo seznam vseh datotek, večjih od 600 pikslov. Na koncu lahko prilagodite datoteko "$ f" tako, da samo izgovarjate imena datotek, če jih boste morali kopirati ali premakniti nekje drugje:

za f v *. png; storite, če [`file $ f |cut -f5 -d \ `-gt 600];potem echo $ f; fi; naredi

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

Linuxova lupina je neverjetno močna! Ta rešitev ni zares praktična za vse, vendar je dobro vedeti, kako delati z lupino, tako da lahko to nalogo opravite, ko jo potrebujete.