Αρχική σελίδα » πως να » Εύρεση εικόνων PNG μεγαλύτερων από x pixel Μέσω του Linux Shell

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

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

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

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

    $ file image3.png
    image3.png: Δεδομένα εικόνας PNG, 613 x 657, RBBA 8 bit / χρώματος, μη παρεμβαλλόμενα

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

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

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

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

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

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

    631
    631
    375
    484
    -έσπασε-

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

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

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

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

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

    για το f στο * .png; κάνει εάν ['αρχείο $ f | cut -f5 -d \ '-gt 600]. τότε echo $ f; fi; γίνει

    image.png
    image1.png
    image17.png
    image18.png
    -έσπασε-

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