Clinfowiki
Περιεχόμενα
Το find είναι ένα πρόγραμμα αναζήτησης στο σύστημα αρχείων σε λειτουργικά συστήματα τύπου Unix. Είναι πρόγραμμα της γραμμής εντολών.
Χρήση και λειτουργία
Ψάχνει σε έναν η περισσότερους καταλόγους ενός συστήματος αρχείων βρίσκοντας αρχεία που τα χαρακτηριστικά τους (όνομα, μέγεθος, ημερομηνία πρόσβασης, κτλ) ικανοποιούν τα κριτήρια αναζήτησης τα οποία τα παρέχουμε στην εντολή σαν ορίσματα.
Η προκαθορισμένη λειτουργία του είναι να ψάχνει στον τρέχοντα κατάλογο. Επιπλέον η find επιτρέπει να καθορίσουμε μια ενέργεια να εκτελεστεί σε κάθε αρχείο που ικανοποιεί τα κριτήρια αναζήτησης. Και έτσι μας παρέχει την ισχυρή δυνατότητα να εφαρμόσουμε κάποιες ενέργειες σε πολλά αρχεία. Υποστηρίζει επίσης ταίριασμα με χρήση κανονικές εκφράσεις.
Το πρόγραμμα find
δεν θεωρείται πλέον το ενδεδειγμένο για να αναζήτηση αρχείων με βάση το όνομα
τους σε ολόκληρο το σύστημα αρχείων. Αντίθετα τα προγράμματα locate
που χρησιμοποιούν βάση δεδομένων από αρχεία δεικτών (που αποκτούνται από την find
), είναι πιο αποδοτικά.
Παραδείγματα
Στον τρέχοντα κατάλογο
find . -name 'my*'
Αυτή η εντολή ψάχνει στον τρέχοντα κατάλογο (που αναπαρίσταται από την περίοδο) και σε υποκαταλόγους μέσα του για αρχεία και καταλόγους με όνομα που αρχίζει από my. Τα μονά εισαγωγικά βοηθούν στο να μην γίνει η επέκταση του κέλυφος - Χωρίς αυτά το κέλυφος θα αντικαθιστούσε το my* με μια λίστα αρχείων που τα ονόματά τους ξεκινάνε με my στον τρέχοντα κατάλογο. Σε νεότερες εκδόσεις μπορεί να παραλειφθεί ο κατάλογος και θεωρείται σαν προκαθορισμένος ο τρέχων κατάλογος. Προσέξτε ότι ο * είναι εδώ χαρακτήρας που έχει το νόημα με το οποίο χρησιμοποιείται σαν σύμβολο στην επέκταση κελύφους.
Μόνο αρχεία
find . -name "my*" -type f
Το όρισμα -type περιορίζει την αναζήτηση μόνο σε κανονικά αρχεία παραλείποντας καταλόγους, ειδικά αρχεία, συμβολικούς συνδέσμους, αρχεία σωληνώσεων κτλ,
Εντολές
Τα προηγούμενα παραδείγματα εμφάνιζαν μια λίστα με αποτελέσματα γιατί η προκαθορισμένη ενέργεια της εντολής find
είναι να εκτελέσει την ενέργεια '-print'. (Σημειώστε ότι παλαιότερες εκδόσεις της εντολής δεν είχαν προκαθορισμένη ενέργεια με αποτέλεσμα να μην εμφανίζεται καμία έξοδος.)
find . -name "my*" -type f -ls
Τυπώνει εκτεταμένη γραμμή πληροφοριών για τα αρχεία του τρέχοντος καταλόγου που ικανοποίησαν τα κριτήρια αναζήτησης μας.
Αναζήτηση σε όλους τους καταλόγους
find / -name "myfile" -type f -print
Αυτή η εντολή ψάχνει σε κάθε κατάλογο του υπολογιστή για ένα αρχείο με το όνομα myfile. Γενικά δεν είναι καλή ιδέα η αναζήτηση αρχείων με αυτόν τον τρόπο καθότι μπορεί να καθυστερήσει πολύ χρονικά, και είναι καλύτερο να προσδιοριστεί καλύτερα ο κατάλογος όπου υποψιαζόμαστε ότι είναι το αρχείο.
Καθορισμός καταλόγου
find /home/weedly -name "myfile" -type f -print
Αυτή η εντολή ψάχνει για αρχεία που ονομάζονται myfile στον κατάλογο /home/weedly , που είναι ο προσωπικός κατάλογος του χρήστη με όνομα weedly. Πρέπει πάντα να προσδιορίζεις τον κατάλογο στο πιο βαθύτερο επίπεδο που θυμάσαι.
Αναζήτηση σε πολλούς καταλόγους
find local /tmp -name mydir -type d -print
Αυτή ψάχνει στους καταλόγους με όνομα mydir στον υποκατάλογο local του τρέχοντος καταλόγου και στον κατάλογο /tmp .
Εκτέλεση ενέργειας
find /var/ftp/mp3 -name "*.mp3" -type f -exec chmod 744 {} \;
Αυτή η εντολή θα αλλάξει τις Άδειες συστήματος αρχείων από όλα τα αρχεία του καταλόγου /var/ftp/mp3. Η ενέργεια καθορίζεται με την επιλογή n -exec chmod 744 {} \;
στην εντολή. Για κάθε αρχείο που το όνομα του τελειώνει σε .mp3
,η εντολή chmod 744 {}
εκτελείται αντικαθιστώντας την μεταβλητή {}
με το όνομα του αρχείου.Η άνω τελεία ; (την οποία ακυρώνουμε με αριστερή πλάγια κάθετο για να μην την ερμηνεύσει το κέλυφος σαν διαχωριστικό εντολής) σηματοδοτεί το τέλος της εντολής. Οι άδειες 744
,εμφανίζονται συνήθως σαν rwxr--r--
, δίνοντας στον χρήστη πλήρη δικαιώματα να γράψει, διαβάσει και εκτελέσει, ενώ οι άλλοι χρήστες μπορούν μόνο να το διαβάσουν. Σε μερικά κελύφη το {}
πρέπει να προστατευθεί με χρήση ειδικών χαρακτήρων.