PNG attēlu meklēšana lielāka par x pikseļiem Izmantojot Linux Shell
Kad jūs mēģināt mainīt savas vietnes dizainu, jums ir jārūpējas par jūsu raksta saturā esošo attēlu platumu. Man ir lieliski ekrānšāviņi par lielāko daļu rakstu, tāpēc, ja vēlos palielināt sānjoslu, ir svarīgi izdomāt, kuri attēli būs pārāk plaši, lai tie atbilstu jaunajam dizainam.
Tā kā es esmu programmētājs, man būtu viegli rakstīt nelielu lietojumprogrammu, lai to izdarītu, bet tas lika man sākt domāt ... kāpēc es nevaru darīt to Linux komandrindā?
Pirmā lieta, ko es sapratu, bija tas, ka PNG attēli attēlo lieluma datus, palaižot tiem “faila” komandu:
$ fails image3.png
image3.png: PNG attēla dati, 613 x 657, 8 bitu / krāsu RGBA, nepārveidoti
Ļoti noderīga, jo 99% no šīs vietnes attēla ir PNG formātā. Tātad tagad, lai to ievietotu cilpā visiem failiem augšupielādes direktorijā:
$ for f * .png; veiciet failu $ f;
image.png: PNG attēla dati, 631 x 185, 8 bitu / krāsu RGBA, nav savstarpēji sasaistīti
image1.png: PNG attēla dati, 631 x 96, 8 bitu / krāsaina RGBA, nepārveidota
image10.png: PNG attēla dati, 375 x 395, 8 bitu / krāsu RGBA, nepārveidoti
image11.png: PNG attēla dati, 484 x 241, 8 bitu / krāsu RGBA, nepārveidoti
-snipped-
Tas ir vairāk noderīgi, bet, lai šķirotu datus, man ir jāvelk dati Excel vai līdzīgā lietojumprogrammā, tāpēc es nolēmu izmantot linux “cut” komandu, lai izvilktu tikai platuma kolonnu.
Jūs pamanīsiet, ka parametrs -f5 norāda, ka ir jāizņem piektā sleja, un -d ar atstarpi pēc tam, kad tas ir izteikts, lai izmantotu atstarpi kā atstarpi. Slīpsvītra ir izbēgšanas raksturs, kas liek čaulai izmantot telpu kā rakstzīmi, nevis kā atstarpi.
$ for f * .png; vai fails $ f | cut -f5 -d;
631
631
375
484
-snipped-
Vai ne pilnīgi noderīga produkcija? Let's push, ka, izmantojot bash, ja paziņojums, un tad tikai parādīt faila komandas izejas, ja platums ir lielāks par 600 pikseļi.
Ievērojiet “(backtick) zīmes ap“ failu $ f | sadaļa, kas norāda, ka komandas iekšpusē 'tiks apstrādātas kā viena izeja un ievadītas if paziņojumā, kur mēs izmantojam -gt (lielāks par). Ņemiet vērā arī to, ka abās kronšteinu pusēs ir nepieciešamas telpas []
par f in * .png; veiciet, ja ['file $ f | cut -f5 -d '-gt 600]; tad failu $ f; fi;
image.png: PNG attēla dati, 631 x 185, 8 bitu / krāsu RGBA, nav savstarpēji sasaistīti
image1.png: PNG attēla dati, 631 x 96, 8 bitu / krāsaina RGBA, nepārveidota
image17.png: PNG attēla dati, 638 x 340, 8 bitu / krāsu RGBA, nepārveidoti
image18.png: PNG attēla dati, 608 x 448, 8 bitu / krāsu RGBA, nepārveidoti
-snipped-
Tagad mums ir saraksts ar visiem failiem, kas ir lielāki par 600 pikseļiem. Varat pielāgot “faila $ f” beigās, lai vienkārši atveidotu faila nosaukumus, ja vēlaties tos kopēt vai pārvietot citur:
par f in * .png; veiciet, ja ['file $ f | cut -f5 -d '-gt 600]; tad echo $ f; fi; darīts
image.png
image1.png
image17.png
image18.png
-snipped-
Linux apvalks ir neticami spēcīgs! Šis risinājums nav īsts praktisks ikvienam, bet ir labi zināt, kā strādāt ar apvalku, lai jūs varētu paveikt šāda veida uzdevumus, kad jums ir nepieciešams.