If-Koubou

Pronalaženje PNG slika veće od x piksela kroz Linux Shell

Pronalaženje PNG slika veće od x piksela kroz Linux Shell (Kako da)

Kada pokušavate raditi na promjeni dizajna vaše web stranice, morate se brinuti o širini slika u sadržaju članka. Imam notorno velike screenshotove na većini članaka koje sam napisao, pa ako želim povećati bočnu traku, ključno je shvatiti koje će slike biti preširoke da bi se uklopile u novi dizajn.

Budući da sam programer, bilo bi lako napisati malu prijavu za to, ali to me natjeralo da razmišljam ... 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 "datoteku" na njima:

$ file image3.png
image3.png: PNG slike, 613 x 657, 8-bitni / boja RGBA, ne isprepleteni

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

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

image.png: PNG slikovni podaci, 631 x 185, 8-bitni / boja RGBA, ne isprepleteni
image1.png: PNG podaci o slici, 631 x 96, 8-bitni / boja RGBA, ne isprepleteni
image10.png: PNG podaci o slici, 375 x 395, 8-bitni / boja RGBA, ne isprepleteni
image11.png: PNG podatci o slici, 484 x 241, 8-bitni / boja RGBA, ne isprepleteni
-snipped-

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

Primijetit ćete da parametar -f5 kaže da je rez za peti stupac, a -d \ s razmakom nakon što je ispričao rez kako bi upotrijebio prostor kao graničnik. Zastava \ znak je znak za bijeg da bi se ljuska upotrijebila za prostor kao znak, a ne kao prazan prostor.

$ za f u * .png; učinite datoteku $ f | cut -f5-d \; učinjeno

631
631
375
484
-snipped-

Nije posve korisno, zar ne? Gurnimo to preko bash ako je izjava, a zatim samo prikazati izlaz naredbe datoteka kada širina je veća od 600 piksela.

Primjetite oznake "(backtick) oko" datoteke $ f | cut ... ", koji upućuju na to da će se naredbe unutar 'obrađivati ​​kao jedan izlaz i upisati u if izjavu, gdje koristimo -gt (veći od). Također imajte na umu da vam je potreban prostor oko obje strane zagrada []

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

image.png: PNG slikovni podaci, 631 x 185, 8-bitni / boja RGBA, ne isprepleteni
image1.png: PNG podaci o slici, 631 x 96, 8-bitni / boja RGBA, ne isprepleteni
image17.png: PNG podaci o slici, 638 x 340, 8-bitni / boja RGBA, ne isprepleteni
image18.png: PNG slikovni podaci, 608 x 448, 8-bitni / boja RGBA, ne isprepleteni
-snipped-

Sada imamo popis svih datoteka širine od 600 piksela. Na kraju možete podesiti "datoteku $ f" kako biste samo odzvali nazive datoteka ako ih je potrebno kopirati ili premjestiti negdje drugdje:

za f u * .png; učinite ako ['datoteka $ f | cut-f5-d \ '-gt 600]; zatim odjekuje $ f; fi; učinjeno

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

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