Linux FIND Εντολή με παραδείγματα

Γνωρίζετε πόσα αρχεία υπάρχουν σε μια νέα εγκατάσταση του Linux ; Εάν χρησιμοποιείτε το PopOS! Η διανομή Linux(Linux distribution) για παράδειγμα, υπάρχουν πάνω από 31.000 αρχεία. Αυτό συμβαίνει πριν ξεκινήσετε τη δημιουργία εγγράφων, την αποθήκευση μουσικής, τη λήψη αρχείων PDF(PDFs) ή την οργάνωση εικόνων.

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

Σύνταξη εντολών Linux FIND(Linux FIND Command Syntax)

Η σύνταξη αναφέρεται στο πώς συναρμολογούνται οι λέξεις ή οι εντολές. Ακριβώς(Just) όπως μια κανονική πρόταση μπορεί να γίνει ανοησία ανακατεύοντας απλώς τις λέξεις, οι εντολές μπορεί να αποτύχουν εάν δεν χρησιμοποιούνται στη σωστή σύνταξη.

βρείτε [διαδρομή] [συνθήκες] [ενέργειες](find [path] [conditions] [actions])

Να τι σημαίνει αυτό:

find – εκκινεί το βοηθητικό πρόγραμμα Find στο Linux

μονοπάτι(path ) – πού να κοιτάξετε

προϋποθέσεις(conditions ) – ορίσματα που θέλετε να εφαρμόσετε στην αναζήτηση

ενέργειες(actions ) – τι θέλετε να κάνετε με τα αποτελέσματα

Ένα απλό παράδειγμα που χρησιμοποιεί και τα τρία μοιάζει με:

εύρημα . -όνομα αρχείου-sample.rtf -εκτύπωση(find . -name file-sample.rtf -print)

Όπως μαντέψατε, θα βρείτε το όνομα αρχείου file-sample.rtf(file-sample.rtf)

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

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

Η ενέργεια -print λέει στο FIND να εμφανίσει τα αποτελέσματα στην οθόνη.

Η τελεία και το -print είναι προεπιλογές για την εντολή find. Έτσι θα εξακολουθεί να κάνει το ίδιο πράγμα αν δεν τα χρησιμοποιήσετε. Έτσι, το find -name file-sample.rtf(find -name file-sample.rtf ) θα σας δώσει τα ίδια αποτελέσματα.

Linux FIND σε άλλον κατάλογο(Linux FIND In Another Directory)

Μπορείτε να κάνετε αναζήτηση σε έναν κατάλογο διαφορετικό από αυτόν στον οποίο βρίσκεστε. Απλώς(Just) εισάγετε τη διαδρομή προς τον κατάλογο μετά το FIND . Εάν είστε στο root και γνωρίζετε ότι το αρχείο βρίσκεται κάπου στον κατάλογο home/user , θα χρησιμοποιούσατε:

find home/user -name file-sample.rtf

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

Linux FIND Αναζήτηση πολλών καταλόγων(Linux FIND Search Multiple Directories)

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

find /lib /var /bin -name file-sample.rtf

Linux FIND χωρίς αναδρομή ή περιοριστική αναδρομή(Linux FIND with No Recursion or Limiting Recursion)

Εάν χρησιμοποιούσατε την παραπάνω εντολή FIND σε επίπεδο ρίζας, θα κοιτούσε σε κάθε κατάλογο του συστήματος. Επομένως, εάν θέλετε να παραμείνετε μόνο στον τρέχοντα κατάλογο, χρησιμοποιήστε την επιλογή -maxdepth . Ο αριθμός μετά το -maxdepth λέει Βρείτε πόσο βαθιά να πάτε πριν σταματήσετε. 

Η χρήση -maxdepth 1 σημαίνει μόνο αυτόν τον κατάλογο. 

βρείτε -name file-sample.rtf -maxdepth 1(find -name file-sample.rtf -maxdepth 1)

Η χρήση -maxdepth 2 ή μεγαλύτερου αριθμού σημαίνει ότι πηγαίνετε σε τόσα επίπεδα βαθύτερα.

find -maxdepth 5 -name file-sample.rtf

Παράδειγμα μπαλαντέρ FIND Linux(Linux FIND Wildcard Example)

Η εντολή FIND χρησιμοποιεί τον αστερίσκο ( (FIND)* ) ως χαρακτήρα μπαλαντέρ. Χρησιμοποιήστε το για οποιοδήποτε μέρος του ονόματος για το οποίο δεν είστε σίγουροι. Μπορεί να χρησιμοποιηθεί περισσότερες από μία φορές στο όνομα. Χωρίς τον τύπο αρχείου ως μέρος του ονόματος αρχείου, τα αποτελέσματα θα περιλαμβάνουν επίσης καταλόγους που ταιριάζουν.

find home/user -name file*sample*

Linux FIND by Type Παράδειγμα(Linux FIND by Type Example)

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

f – αρχείο

δ – κατάλογος

β – συσκευή μπλοκ

γ – συσκευή χαρακτήρων

l – συμβολικός σύνδεσμος

s – πρίζα

find home/user -name file*sample* -type d

Παράδειγμα Linux FIND χωρίς διάκριση πεζών-κεφαλαίων(Linux FIND Case Insensitive Example)

Σε αντίθεση με τα Windows(Windows) , το Linux ενδιαφέρεται για το αν ένα γράμμα είναι κεφαλαίο ή πεζό. Επομένως, εάν θέλετε να πραγματοποιεί αναζήτηση τόσο για File-Sample.rtf όσο(File-Sample.rtf) και για file-sample.rtf, χρησιμοποιήστε την επιλογή -iname .

find home/user -iname File-Sample.rtf

Linux FIND Αρκετά αρχεία Παράδειγμα(Linux FIND Several Files Example)

Ας υποθέσουμε ότι θέλατε να βρείτε τις εκδόσεις .rtf και .html ενός αρχείου. Αυτό μπορεί να γίνει με μία εντολή χρησιμοποιώντας τον τελεστή -o (ή). Σε ορισμένες διανομές, ίσως χρειαστεί να τοποθετήσετε τα ονόματα μέσα σε αγκύλες, όπως ( -name file-sample.rtf -o -name file-sample.html )

find home/user -name file-sample.rtf -o -name file-sample.html

Linux ΒΡΕΙΤΕ αρχεία που δεν ταιριάζουν με ένα όνομα(Linux FIND Files That Don’t Match a Name)

Ίσως γνωρίζετε ότι υπάρχει η έκδοση .html ενός αρχείου, αλλά όχι εάν υπάρχουν άλλα. Θα μπορούσατε να φιλτράρετε την έκδοση .html από την αναζήτηση χρησιμοποιώντας την επιλογή -not .

find home/user -name file-sample* -not -name *.html

Linux FIND Χωρίς Αποτελέσματα Σφάλματος(Linux FIND Without Error Results)

Στο παράδειγμα εύρεσης χωρίς αναδρομή, παρατηρήστε ότι περιείχε κάθε κατάλογο στον οποίο δεν μπορούσε να αναζητήσει και το σωστό αποτέλεσμα. Αυτό είναι ενοχλητικό. Ας σταματήσει να εμφανίζει όλους αυτούς τους καταλόγους " Δεν επιτρέπεται η άδεια ". (Permission)Συνδυάστε το με μια άλλη εντολή τερματικού Linux(Linux terminal command) , grep. Μπορείτε επίσης να χρησιμοποιήσετε την Εύρεση(Find) με grep για να βρείτε αρχεία με συγκεκριμένες λέξεις σε αυτά(find files with specific words in them) .

find -maxdepth 5 -name file-sample.rtf 2>&1 | grep -v “Permission denied”

Ας αναλύσουμε το 2>&1 .

2 – αντιπροσωπεύει το stderr το οποίο είναι σύντομο για την έξοδο τυπικών σφαλμάτων. 

1 – αντιπροσωπεύει το stdout που είναι σύντομο για την τυπική έξοδο

> – σημαίνει ανακατεύθυνση οποιασδήποτε εξόδου βρίσκεται στα αριστερά της σε ό,τι βρίσκεται στα δεξιά της.

& – σημαίνει συναρμολόγηση.

Άρα 2>&1 σημαίνει να λαμβάνετε τα τυπικά σφάλματα και να τα ανακατευθύνετε και στη συνέχεια να τα τοποθετείτε μαζί με την τυπική έξοδο σε μία έξοδο.

Τώρα ας δούμε το | grep -v “Permission denied” .

| (ονομάζεται σωλήνας) – λέει στο Linux να τροφοδοτήσει τα αποτελέσματα ό,τι βρίσκεται στα αριστερά του σε ό,τι βρίσκεται στα δεξιά του. Τροφοδοτείται στην εντολή grep.

grep – είναι ένα βοηθητικό πρόγραμμα αναζήτησης κειμένου. 

-v – λέει στο grep να αναζητήσει οτιδήποτε δεν ταιριάζει με κείμενο στα αριστερά του -v. Σε αυτήν την περίπτωση, λέει στο grep να βρει μόνο οτιδήποτε δεν περιέχει το κείμενο ή τη συμβολοσειρά, " Άδεια(Permission) δεν επιτρέπεται". Έτσι, το grep θα σας εμφανίσει μόνο τα αποτελέσματα που αναζητάτε και τυχόν σφάλματα που δεν ταιριάζουν με το " Άδεια(Permission) δεν επιτρέπεται".

Παράδειγμα Linux FIND by Permissions(Linux FIND by Permissions Example)

Για να το χρησιμοποιήσετε καλά, πρέπει να μάθετε δικαιώματα Linux(learn Linux permissions)

Τα παραδείγματα των αρχείων έχουν όλα τα δικαιώματα 664, εκτός από ένα με τα δικαιώματα 775. Χρησιμοποιήστε την επιλογή -perm για να το βρείτε.

find Documents/ -name file-sample* -type f -perm 775

Linux FIND by Size Παράδειγμα(Linux FIND by Size Example)

Η εύρεση αρχείων ανά μέγεθος είναι χρήσιμη για να γεμίσετε αυτά τα τεράστια αρχεία στον σκληρό σας δίσκο. Χρησιμοποιήστε την επιλογή -size, το επιθυμητό μέγεθος και ένα από τα ακόλουθα επιθήματα. Εάν δεν χρησιμοποιείται επίθημα, το -size ορίζεται από προεπιλογή σε b . Για να βρείτε αρχεία ίσα και μεγαλύτερα από ένα συγκεκριμένο μέγεθος, βάλτε το σύμβολο συν (+) μπροστά από το μέγεθος.

M – Megabytes

G – Gigabytes

k – Kilobytes

b – μπλοκ (512 byte – προεπιλογή)

γ – bytes

w – λέξεις (δύο byte μαζί)

find -size +500k

Linux FIND από τον ιδιοκτήτη(Linux FIND by Owner)

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

find -user groupname ή find -user username

Linux FIND Files by Last Modified Example

Για να βρείτε αρχεία που τροποποιήθηκαν ή επεξεργάστηκαν τον τελευταίο αριθμό X ημερών, χρησιμοποιήστε το -mtime(-mtime) ακολουθούμενο από έναν αριθμό. Τοποθετώντας το σύμβολο μείον ( ) μπροστά από τον αριθμό, θα βρείτε οτιδήποτε έχει αλλάξει μέσα σε αυτές πολλές μέρες πριν από τώρα. Το σύμβολο συν ( + ) σημαίνει μέσα σε αυτές πολλές ημέρες πριν από τώρα. 

find -name “file-sample*” -mtime +5 (greater than 5 days ago)

find -name “file-sample*” -mtime -5 (less than 5 days ago)

Για να βρείτε την τελευταία τροποποίηση σε λεπτά, χρησιμοποιήστε την επιλογή -mmin ακολουθούμενη από τον αριθμό των λεπτών. Χρησιμοποιήστε τα + και – όπως παραπάνω.

find -name “file-sample*” -mmin -5

find -name “file-sample*” -mmin +5

Linux FIND Files by Last Access Time Time Παράδειγμα(Linux FIND Files by Last Accessed TIme Example)

Η επιλογή που χρησιμοποιείται για την εύρεση αρχείων με βάση την τελευταία φορά που άνοιξαν είναι -atime για ημέρες και -amin για λεπτά. Ακολουθήστε το με τον αριθμό των ημερών ή λεπτών για να επιστρέψετε και χρησιμοποιήστε το σύμβολο + και – ως μεγαλύτερο και μικρότερο από.

find -name “file-sample*” -atime -5

find -name “file-sample* -amin -5

Συνδυάστε το FIND με άλλες εντολές Linux(Combine FIND with Other Linux Commands)

Υπάρχει ένα παραπάνω παράδειγμα χρήσης find με την εντολή grep και μπορείτε να το χρησιμοποιήσετε με πολλά άλλα. Μπορείτε να δείτε ότι η χρήση εντολών εύρεσης και άλλων εντολών μπορεί να είναι πολύ ισχυρή και τεράστια εξοικονόμηση χρόνου. Φανταστείτε(Imagine) ότι πρέπει να διαγράψετε μια δέσμη ενός συγκεκριμένου τύπου αρχείου. Αντί να ψάχνετε στον εξερευνητή αρχείων, απλώς δημιουργήστε τη σωστή εντολή και αυτό γίνεται σε δευτερόλεπτα. Πώς θα χρησιμοποιήσετε την εντολή find τώρα;



About the author

Ο Josh έχει πάνω από 10 χρόνια εμπειρίας στη βιομηχανία λογισμικού και ασύρματης σύνδεσης, ειδικά στους τομείς του προγραμματισμού και των κριτικών Android. Αυτή τη στιγμή είναι ανώτερος μηχανικός λογισμικού στη Microsoft, εργάζεται σε διάφορα προϊόντα ms office. Ο Τζος έχει έντονο ενδιαφέρον να βοηθά άλλους να μάθουν νέα εργαλεία λογισμικού και είναι πάντα πρόθυμος να μοιραστεί τις συμβουλές και τα κόλπα του με όσους ρωτούν.



Related posts