Android

Πώς να βρείτε αρχεία σε linux χρησιμοποιώντας τη γραμμή εντολών

Διεπαφή χρήστη (User Interface)

Διεπαφή χρήστη (User Interface)

Πίνακας περιεχομένων:

Anonim

Η εντολή find είναι ένα από τα πιο ισχυρά εργαλεία στο οπλοστάσιο διαχειριστών συστημάτων Linux. Αναζητά αρχεία και καταλόγους σε μια ιεραρχία καταλόγου που βασίζεται σε μια έκφραση που δίνεται από τον χρήστη και μπορεί να εκτελέσει ενέργεια που καθορίζεται από το χρήστη σε κάθε αρχείο που αντιστοιχεί.

Μπορείτε να χρησιμοποιήσετε την εντολή find για να αναζητήσετε αρχεία και καταλόγους με βάση τα δικαιώματά τους, τον τύπο, την ημερομηνία, την ιδιοκτησία, το μέγεθος και άλλα. Μπορεί επίσης να χρησιμοποιηθεί σε συνδυασμό με άλλα εργαλεία όπως grep ή sed .

Το Linux find σύνταξη εντολών

Η γενική σύνταξη για την εντολή find είναι ως εξής:

find

  • Το χαρακτηριστικό options ελέγχει την επεξεργασία των συμβολικών συνδέσεων, τις επιλογές εντοπισμού σφαλμάτων και τη μέθοδο βελτιστοποίησης. Το χαρακτηριστικό path… ορίζει τον κατάλογο εκκίνησης ή τους καταλόγους όπου το find θα αναζητήσει τα αρχεία. Το χαρακτηριστικό expression αποτελείται από επιλογές, μοτίβα αναζήτησης και δράσεις που διαχωρίζονται από τους φορείς εκμετάλλευσης.

Για να αναζητήσετε αρχεία σε έναν κατάλογο, ο χρήστης που καλεί την εντολή find πρέπει να έχει δικαιώματα ανάγνωσης σε αυτόν τον κατάλογο.

Ας ρίξουμε μια ματιά στο ακόλουθο παράδειγμα:

find -L /var/www -name "*.js"

  • Η επιλογή -L (επιλογές) λέει στην εντολή find να ακολουθήσει συμβολικούς συνδέσμους. Η /var/www (διαδρομή…) καθορίζει τον κατάλογο που θα αναζητηθεί.Η έκφραση -name "*.js λέει find για την αναζήτηση αρχείων που τελειώνουν με .js (αρχεία JavaScript).

Εύρεση αρχείων με όνομα

Η εύρεση αρχείων με το όνομα είναι πιθανώς η πιο κοινή χρήση της εντολής find . Για να βρείτε ένα αρχείο με το όνομα του, χρησιμοποιήστε την επιλογή -name ακολουθώντας το όνομα του αρχείου που αναζητάτε.

Για παράδειγμα, για να αναζητήσετε ένα αρχείο που ονομάζεται document.pdf στον κατάλογο /home/linuxize θα χρησιμοποιήσατε την ακόλουθη εντολή:

find /home/linuxize -type f -name document.pdf

Για να εκτελέσετε μια αναζήτηση μη ευαίσθητη σε περίπτωση, αλλάξτε την επιλογή -name με -iname :

find /home/linuxize -type f -iname document.pdf

Η παραπάνω εντολή θα ταιριάζει με το "Document.pdf", "DOCUMENT.pdf"..etc.

Εύρεση αρχείων κατά Επέκταση

Η αναζήτηση αρχείων κατ 'επέκταση είναι ίδια με την αναζήτηση αρχείων με βάση το όνομα. Για παράδειγμα, για να βρείτε όλα τα αρχεία που τελειώνουν με το .log.gz μέσα στον κατάλογο /var/log/nginx μπορείτε να χρησιμοποιήσετε:

find /var/log/nginx -type f -name '*.log.gz'

Είναι σημαντικό να αναφέρουμε ότι όταν χρησιμοποιείτε τον χαρακτήρα μπαλαντέρ, πρέπει είτε να αναφέρετε το μοτίβο είτε να αποφύγετε το σύμβολο * αστερίσκου με αντίστροφη κάθετο \ έτσι ώστε να μην ερμηνεύεται από το κέλυφος.

Για να βρείτε όλα τα αρχεία που δεν ταιριάζουν με το regex *.log.gz μπορείτε να χρησιμοποιήσετε την επιλογή *.log.gz . Για παράδειγμα, για να βρείτε όλα τα αρχεία που δεν τελειώνουν στο *.log.gz θα χρησιμοποιούσατε:

find /var/log/nginx -type f -not -name '*.log.gz'

Εύρεση αρχείων ανά τύπο

Μερικές φορές μπορεί να χρειαστεί να αναζητήσετε συγκεκριμένους τύπους αρχείων, όπως κανονικά αρχεία, καταλόγους ή συμβολικές συνδέσεις. Στο Linux, όλα είναι ένα αρχείο.

Για να αναζητήσετε αρχεία με βάση τον τύπο τους, χρησιμοποιήστε την επιλογή -type και μία από τις ακόλουθες περιγραφές για να καθορίσετε τον τύπο αρχείου:

  • f : κανονικό αρχείο d : κατάλογος l : συμβολικός σύνδεσμος c : συσκευές χαρακτήρων b : συσκευές μπλοκ p : όνομα σωλήνα (FIFO) s : πρίζα

Για παράδειγμα, για να βρείτε όλους τους καταλόγους στον τρέχοντα κατάλογο εργασίας, θα χρησιμοποιούσατε:

find. -type d

Το συνηθισμένο παράδειγμα θα ήταν να τροποποιήσετε αναδρομικά τα δικαιώματα αρχείων ιστότοπων σε 644 και τα δικαιώματα καταλόγου σε 755 χρησιμοποιώντας την εντολή chmod :

find /var/www/my_website -type d -exec chmod 0755 {} ; find /var/www/my_website -type f -exec chmod 0644 {} ;

Εύρεση αρχείων κατά μέγεθος

Για να βρείτε αρχεία με βάση το μέγεθος του αρχείου, περάστε την παράμετρο -size μαζί με τα κριτήρια μεγέθους. Μπορείτε να χρησιμοποιήσετε τα ακόλουθα επιθέματα για να καθορίσετε το μέγεθος του αρχείου:

  • b : μπλοκ 512-byte (προεπιλογή) c : bytes w : λέξεις δύο byte k : Kilobytes M : Megabytes G : Gigabytes

Η ακόλουθη εντολή θα εντοπίσει όλα τα αρχεία ακριβώς 1024 bytes μέσα στον κατάλογο /tmp :

find /tmp -type f -size 1024c

Η εντολή find σας επιτρέπει επίσης να αναζητήσετε αρχεία που είναι μεγαλύτερα ή μικρότερα από ένα καθορισμένο μέγεθος.

Στο παρακάτω παράδειγμα, αναζητούμε όλα τα αρχεία με 1MB μικρότερο από 1MB μέσα στον τρέχοντα κατάλογο εργασίας. Παρατηρήστε το σύμβολο μείον πριν την τιμή μεγέθους:

find. -type f -size -1M

find. -type f -size +1M

Μπορείτε ακόμη και να αναζητήσετε αρχεία εντός εύρους μεγέθους. Η ακόλουθη εντολή θα βρει όλα τα αρχεία μεταξύ 1 και 2MB :

find. -type f -size +1M -size 21M

Εύρεση αρχείων ανά ημερομηνία τροποποίησης

Η εντολή find μπορεί επίσης να αναζητήσει αρχεία με βάση την τελευταία τροποποίηση, πρόσβαση ή αλλαγή χρόνου.

Όπως με την αναζήτηση κατά μέγεθος, χρησιμοποιήστε τα σύμβολα συν και μείον για "μεγαλύτερο από" ή "μικρότερο από".

Ας πούμε ότι πριν από λίγες ημέρες, τροποποιήσατε ένα από τα αρχεία διαμόρφωσης περιστεριών, αλλά ξεχάσατε ποια. Μπορείτε να φιλτράρετε εύκολα όλα τα αρχεία στον κατάλογο .conf που τελειώνει με το .conf και έχουν τροποποιηθεί τις τελευταίες πέντε ημέρες με:

find /etc/dovecot/conf.d -name "*.conf" -mtime 5

Ακολουθεί ένα άλλο παράδειγμα φιλτραρίσματος αρχείων με βάση την ημερομηνία τροποποίησης χρησιμοποιώντας την επιλογή -daystart . Η παρακάτω εντολή θα απαριθμεί όλα τα αρχεία στον κατάλογο /home που έχουν τροποποιηθεί πριν από 30 ή περισσότερες ημέρες:

find /home -mtime +30 -daystart

Βρείτε αρχεία με δικαιώματα

Η επιλογή -perm σας επιτρέπει να αναζητήσετε αρχεία με βάση τα δικαιώματα αρχείων.

Για παράδειγμα, για να βρείτε όλα τα αρχεία με δικαιώματα ακριβώς 775 μέσα στον κατάλογο /var/www/html , θα χρησιμοποιούσατε:

find /var/www/html -perm 644

Μπορείτε να προθέσετε τον αριθμητικό τρόπο με μείον - ή με κάθετο / .

Όταν η κάθετο / χρησιμοποιείται ως πρόθεμα, τότε τουλάχιστον μία κατηγορία (χρήστης, ομάδα ή άλλοι) πρέπει να έχει τουλάχιστον τα αντίστοιχα bits που έχουν οριστεί για ένα αρχείο που ταιριάζει.

Εξετάστε την ακόλουθη εντολή παράδειγμα:

find. -perm /444

Η παραπάνω εντολή θα ταιριάζει με όλα τα αρχεία με δικαιώματα ανάγνωσης που έχουν οριστεί για χρήστη, ομάδα ή άλλα.

Αν το μείον - χρησιμοποιείται ως πρόθεμα τότε για το αρχείο που ταιριάζει πρέπει να ρυθμιστούν τουλάχιστον τα καθορισμένα bits. Η ακόλουθη εντολή θα αναζητήσει αρχεία που έχουν δικαιώματα ανάγνωσης και εγγραφής για τον ιδιοκτήτη και την ομάδα και είναι αναγνώσιμα από άλλους χρήστες:

find. -perm -664

Βρείτε αρχεία ανά ιδιοκτήτη

Για να βρείτε αρχεία που ανήκουν σε συγκεκριμένο χρήστη ή ομάδα, χρησιμοποιήστε τις επιλογές -user και -group .

Για παράδειγμα, για να αναζητήσετε όλα τα αρχεία και τους καταλόγους που ανήκει στον χρήστη linuxize , θα εκτελέσετε:

find / -user linuxize

Εδώ είναι ένα πραγματικό παράδειγμα. Ας υποθέσουμε ότι θέλετε να βρείτε όλα τα αρχεία που ανήκουν στο χρήστη www-data και να αλλάξετε την ιδιοκτησία των αντιστοιχισμένων αρχείων από www-data σε nginx :

find / -user www-data -type f -exec chown nginx {} ;

Εύρεση και διαγραφή αρχείων

Για να διαγράψετε όλα τα αρχεία που αντιστοιχούν, προσθέστε την επιλογή -delete στο τέλος της έκφρασης αντιστοίχισης.

Βεβαιωθείτε ότι χρησιμοποιείτε αυτήν την επιλογή μόνο όταν είστε βέβαιοι ότι το αποτέλεσμα αντιστοιχεί στα αρχεία που θέλετε να διαγράψετε. Είναι πάντα καλή ιδέα να εκτυπώσετε τα αντιστοιχισμένα αρχεία πριν χρησιμοποιήσετε την επιλογή -delete .

Για παράδειγμα, για να διαγράψετε όλα τα αρχεία που λήγουν με το .temp από το /var/log/ θα χρησιμοποιούσατε:

find /var/log/ -name `*.temp` -delete Χρησιμοποιήστε την επιλογή " -delete " με μεγάλη προσοχή. Η γραμμή εντολών εύρεσης αξιολογείται ως έκφραση και αν προσθέσετε -delete επιλογή -delete , η εντολή θα διαγράψει τα πάντα κάτω από τα σημεία εκκίνησης που ορίσατε.

Όταν πρόκειται για καταλόγους, μπορείτε να διαγράψετε μόνο κενές καταλόγους ίδιες με τις rmdir .

συμπέρασμα

Σας έχουμε δείξει πώς να χρησιμοποιήσετε την εντολή find με διάφορες επιλογές και κριτήρια.

Αυτό το άρθρο θα σας δώσει μια βασική κατανόηση του τρόπου εντοπισμού αρχείων στα συστήματα Linux. Μπορείτε επίσης να επισκεφθείτε τη σελίδα man man and read για όλες τις άλλες ισχυρές επιλογές της εντολής find .

βρείτε τερματικό