PNG-piltide leidmine suurem kui x pikslit Linuxi kesta kaudu
Kui üritate oma veebisaidi kujunduse muutmisel tööd teha, peate muretsema oma artikli sisu piltide laiuse pärast. Mul on teadaolevalt suured ekraanipildid enamiku kirjutatud artiklite kohta, nii et kui tahan külgriba suurendada, on oluline välja selgitada, millised pildid on liiga suured, et need sobiksid uue kujundusega.
Kuna ma olen programmeerija, oleks mul lihtne seda väikest rakendust kirjutada, kuid see pani mind mõtlema ... miks ma ei saa seda Linuxi käsureal teha?
Esimene asi, mida ma arvasin, oli see, et PNG-pildid näitavad neile failide käsu käivitamisel suuruse andmeid:
$ file image3.png
image3.png: PNG-pildiandmed, 613 x 657, 8-bitine / värviline RGBA, mitte-põimitud
Väga kasulik, kuna 99% sellel saidil olevast pildist on PNG-vormingus. Nüüd visake see kõikidele üleslaadimiste kataloogi failidele:
$ for f * .png; tee faili $ f;
image.png: PNG-pildiandmed, 631 x 185, 8-bitine / värviline RGBA, mitte-põimitud
image1.png: PNG-pildiandmed, 631 x 96, 8-bitine / värviline RGBA, mitte-põimitud
image10.png: PNG-pildiandmed, 375 x 395, 8-bitine / värviline RGBA, mitte-põimitud
image11.png: PNG-pildiandmed, 484 x 241, 8-bitine / värviline RGBA, mitte-põimitud
-snippis-
See on kasulikum, kuid andmete sortimiseks peaksin andmed Excelisse või sarnasesse rakendusse tõmbama, nii et otsustasin kasutada linux “cut” käsku, et tõmmata ainult laiuse veerg.
Märkate, et parameeter -f5 näitab lõigatud viiendat veergu, ja -d, kui tühikuks on tühik, kui ruum on eraldajaks. Kaldkriips on põgenemismärk, mis ütleb koorele ruumi tähemärgina, mitte tühikuna.
$ f jaoks * .png; tee faili $ f | cut -f5 -d;
631
631
375
484
-snippis-
Kas see pole täiesti kasulik väljund? Surgame selle läbi bash if avalduse ja seejärel kuvame ainult faili käsu väljundi, kui laius on suurem kui 600 pikslit.
Pange tähele "(backtick) märgid" faili $ f | ümber lõik… ”, mis näitavad, et käsud sees" töödeldakse ühe väljundina ja sisestatakse if-i väite, kus me kasutame -gt (suurem kui). Pange tähele ka, et sul on vaja ruume sulgude kummalgi poolel []
f puhul * .png; tehke, kui ['fail $ f | cut -f5 -d '-gt 600]; seejärel faili $ f; fi; valmis
image.png: PNG-pildiandmed, 631 x 185, 8-bitine / värviline RGBA, mitte-põimitud
image1.png: PNG-pildiandmed, 631 x 96, 8-bitine / värviline RGBA, mitte-põimitud
image17.png: PNG-pildiandmed, 638 x 340, 8-bitine / värviline RGBA, mitte-põimitud
image18.png: PNG-pildiandmed, 608 x 448, 8-bitine / värviline RGBA, mitte-põimitud
-snippis-
Nüüd on meil nimekiri kõigist failidest, mis on suuremad kui 600 pikslit. Lõpuks saate muuta faili "f", et lihtsalt failide nimesid väljendada, kui teil on vaja neid kuskil mujal kopeerida või teisaldada:
f puhul * .png; tehke, kui ['fail $ f | cut -f5 -d '-gt 600]; siis echo $ f; fi; valmis
image.png
image1.png
image17.png
image18.png
-snippis-
Linuxi kest on uskumatult võimas! See lahendus ei ole kõigile praktiliselt praktiline, kuid on hea teada, kuidas koorega töötada, et saaksite seda tüüpi ülesande täita, kui vajate.