Koduleht » kuidas » PNG-piltide leidmine suurem kui x pikslit Linuxi kesta kaudu

    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.