29Jun

A PNG képek nagyobbak, mint x Pixelek a Linux Shell segítségével

Ha megpróbálsz dolgozni a weboldal tervezésének megváltoztatásán, ügyelni kell a képek tartalmának szélességére. Jelentősen nagy screenshotok vannak az általam írt cikkek nagy részében, ezért ha növelni szeretném az oldalsávot, akkor fontos, hogy kiderítsék, mely képek túlságosan szélesek ahhoz, hogy illeszkedjenek az új designba.

Mivel programozó vagyok, könnyű lenne megírni egy kis alkalmazást erre, de elkezdtem gondolkodni. .. miért nem tehetem ezt a Linux parancssorban?

Az első dolog, amire rájöttem, az volt, hogy a PNG képek megjelenítik a méretadatokat a "fájl" paranccsal:

$ fájl image3.png
image3.png: PNG képadat, 613 x 657, 8 bites / színesRGBA, nem átlapolt

Nagyon hasznos, mivel a kép 99% -a ezen az oldalon PNG formátumban van. Most pedig az összes fájlt a hurokba dobja a feltöltési címemben:

$ for f in *. png; csináld $ f fájlt; kész

image.png: PNG képadat, 631 x 185, 8 bites / színesRGBA, nem átlapolt
image1.png: PNG képadat, 631 x 96, 8 bites / színes RGBA, nem átlapolt


image10.png: PNG képadat, 375 x 395, 8 bites / színes RGBA,átlapolt
image11.png: PNG képadat, 484 x 241, 8 bites / színes RGBA, nem átlapolt
sínes

Ez hasznosabb, de az adatokat Excel-be vagy hasonló alkalmazásba kellene húznomhogy rendezzék az adatokat, úgyhogy úgy döntöttem, hogy a linux "cut" paranccsal kihúzzam a szélesség oszlopot.

Megfigyelheti, hogy az -f5 paraméter azt jelzi, hogy a vágás az ötödik oszlopot veszi fel, és a -d \ egy üres helyet, miután kijelölte a vágást, hogy a határoló területként használjon helyet. A sáv \ karakter egy menekülési karakter, amely megmondja a shell-nak, hogy a szóközt karakterként használja, nem pedig a szóközöket.

$ az f-ben a *. png fájlban: $ f | cut -f5 -d \; kész

631
631
375
484
-snipped-

Nem teljesen hasznos kimenet, ugye? Nyomjuk meg ezt a parancsot egy bash parancs segítségével, majd csak akkor jelenítsük meg a fájl parancs kimenetét, ha a szélesség nagyobb, mint 600 képpont.

Figyeld meg a "(backtick) jeleket" a $ f | fájl körülvágás. .. "szakasz, amely azt jelzi, hogy a" belül "parancsokat egyetlen kimenetként kell feldolgozni és bevinni az if utasításba, ahol egy -gt( nagyobb) értéket használunk. Vegye figyelembe azt is, hogy a []

a fülre a *. png-ben kell, hogy legyen szó, ha a [`file $ f |vágott -f5 -d \ `-gt 600];akkor fájl $ f; fi; kész

image.png: PNG képadat, 631 x 185, 8 bites / színes RGBA, nem átlapolt
image1.png: PNG képadatok, 631 x 96, 8 bites / színes RGBA, nem átlapolt
image17.png: PNG képadat, 638 x 340, 8 bites / színes RGBA, nem átlapolt
image18.png: PNG képadat, 608 x 448, 8 bites / színes RGBA, nem átlapolt
-süllyesztett

Most van egy lista a 600 képpontosnál nagyobb fájlokról. Beállíthatja a "$ f" fájlt a végén, hogy csak akkor ismételje meg a fájlneveket, ha másolni vagy mozgatni kellene valahová máshová:

f-ben a *. png fájlban, ha [`file $ f |vágott -f5 -d \ `-gt 600];majd echo $ f; fi; kész

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

A Linux shell hihetetlenül erős! Ez a megoldás nem mindenki számára praktikus, de jó tudni, hogyan kell dolgozni a héjjal, így ezt a feladatot akkor érheti el, ha szükséges.