29Jun

Εύρεση εικόνων PNG μεγαλύτερων από x pixel Μέσω του Linux Shell

click fraud protection

Όταν προσπαθείτε να αλλάξετε το σχεδιασμό του ιστότοπού σας, πρέπει να ασχοληθείτε με το πλάτος των εικόνων στο περιεχόμενο του άρθρου σας.Έχω φημισμένα μεγάλα screenshots για τα περισσότερα άρθρα που έχω γράψει, οπότε αν θέλω να αυξήσω την πλαϊνή μπάρα, είναι σημαντικό να καταλάβω ποιες εικόνες θα είναι πολύ μεγάλες για να χωρέσουν στο νέο σχέδιο.

Δεδομένου ότι είμαι προγραμματιστής, θα ήταν εύκολο για μένα να γράψω μια μικρή αίτηση για να το κάνω αυτό, αλλά με έκανε να αρχίσω να σκέφτομαι. .. γιατί δεν μπορώ να το κάνω αυτό στη γραμμή εντολών του Linux;

Το πρώτο πράγμα που κατάλαβα ήταν ότι οι εικόνες PNG εμφανίζουν τα δεδομένα μεγέθους όταν εκτελείτε την εντολή "αρχείο" πάνω τους:

$ file image3.png
image3.png: Δεδομένα εικόνας PNG, 613 x 657, 8 bit / χρώμαRGBA, non-interlaced

Πολύ χρήσιμο αφού το 99% της εικόνας σε αυτόν τον ιστότοπο είναι σε μορφή PNG.Τώρα λοιπόν να το ρίξω σε ένα βρόχο για όλα τα αρχεία στον κατάλογο μεταφόρτωσης:

$ για f στο *. png; do αρχείο $ f; κάνει

instagram viewer

image.png: δεδομένα εικόνας PNG, 631 x 185, 8 bit / χρώμαRGBA, μη παρεμβλημένο
image1.png: Δεδομένα εικόνας PNG, 631 x 96, 8 bit / χρώμα RGBA, μη μεταφρασμένα
image10.png: Δεδομένα εικόνας PNG, 375 x 395,interlaced
image11.png: Δεδομένα εικόνας PNG, 484 x 241, 8 bit / χρώμα RGBA, μη παρεμβαλλόμενα
-snipped-

Αυτό είναι πιο χρήσιμο, αλλά θα έπρεπε να τραβήξω τα δεδομένα σε Excel ή παρόμοια εφαρμογήπροκειμένου να ταξινομήσετε τα δεδομένα, οπότε αποφάσισα να χρησιμοποιήσω την εντολή linux "cut" για να βγάλω μόνο τη στήλη πλάτους.

Θα παρατηρήσετε ότι η παράμετρος -f5 λέει την περικοπή για να πάρει την πέμπτη στήλη και το -d \ με ένα κενό διάστημα αφού λέει την περικοπή για να χρησιμοποιήσει ένα διάστημα ως οριοθέτη.Ο χαρακτήρας slash είναι ένας χαρακτήρας διαφυγής για να πει στο κέλυφος να χρησιμοποιεί το χώρο ως χαρακτήρα και όχι ως κενό.

$ για f στο *. png; κάνει το αρχείο $ f | cut -f5 -d \; κάνει

631
631
375
484
-snipped-

Δεν είναι εξ ολοκλήρου χρήσιμο αποτέλεσμα;Ας το προωθήσουμε μέσω μιας εντολής bash if και στη συνέχεια να δείξουμε μόνο την έξοδο της εντολής αρχείου όταν το πλάτος είναι μεγαλύτερο από 600 pixels.

Παρατηρήστε τα σημάδια `(backtick) γύρω από το αρχείο $ f |cut. .. ", που υποδεικνύουν ότι οι εντολές μέσα στο` θα επεξεργαστούν ως μία έξοδος και θα τροφοδοτηθούν στη εντολή if, όπου χρησιμοποιούμε ένα -gt( μεγαλύτερο από).Σημειώστε επίσης ότι χρειάζεστε κενά γύρω από τις δύο πλευρές των στηριγμάτων []

για το f στο *. png; do αν [`file $ f |cut -f5 -d \ "-gt 600].στη συνέχεια, αρχείο $ f; fi; κάνει

image.png: δεδομένα εικόνας PNG, 631 x 185, 8 bit / χρώμα RGBA, μη μεταφρασμένο
image1.png: δεδομένα εικόνας PNG, 631 x 96,, μη μεταφρασμένα
image17.png: Δεδομένα εικόνας PNG, 638 x 340, 8 bit / χρώμα RGBA, μη μεταφρασμένα
image18.png: Δεδομένα εικόνας PNG, 608 x 448, 8 bit / χρώμα RGBA,
-snipped-

Τώρα έχουμε μια λίστα με όλα τα αρχεία μεγαλύτερα από 600 pixels.Θα μπορούσατε να προσαρμόσετε το "αρχείο $ f" στο τέλος για να επαναλάβετε απλώς τα ονόματα αρχείων αν χρειάζεται να τα αντιγράψετε ή να τα μετακινήσετε αλλού:

για το f στο *. png; do εάν [`file $ f |cut -f5 -d \ "-gt 600].τότε echo $ f; fi; κάνει

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

Το κέλυφος του Linux είναι απίστευτα ισχυρό!Αυτή η λύση δεν είναι πραγματικά πρακτική για όλους, αλλά είναι καλό να ξέρεις πώς να δουλεύεις με το κέλυφος για να μπορέσεις να εκπληρώσεις αυτό το είδος της εργασίας όταν χρειάζεται.