Find

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

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

Η προκαθορισμένη λειτουργία του είναι να ψάχνει στον τρέχοντα κατάλογο.  Επιπλέον η **find** επιτρέπει να καθορίσουμε μια ενέργεια να εκτελεστεί σε κάθε αρχείο που ικανοποιεί τα κριτήρια αναζήτησης. Και έτσι μας παρέχει την ισχυρή δυνατότητα να εφαρμόσουμε κάποιες ενέργειες σε πολλά αρχεία. Υποστηρίζει επίσης ταίριασμα με χρήση κανονικές εκφράσεις.

Το πρόγραμμα `find` δεν θεωρείται πλέον το ενδεδειγμένο για να αναζήτηση αρχείων με βάση το όνομα
τους σε ολόκληρο το σύστημα αρχείων. Αντίθετα τα προγράμματα `[[GNU_locate|locate]]` που χρησιμοποιούν βάση δεδομένων από αρχεία δεικτών (που αποκτούνται από την  `find`), είναι πιο αποδοτικά.

## Παραδείγματα

### Στον τρέχοντα κατάλογο
 find . -name 'my*'
Αυτή η εντολή  ψάχνει στον τρέχοντα κατάλογο (που αναπαρίσταται από την περίοδο) και σε υποκαταλόγους μέσα του για αρχεία και καταλόγους με όνομα που αρχίζει από  *my*. Τα μονά εισαγωγικά βοηθούν στο να μην γίνει η επέκταση του κέλυφος - Χωρίς αυτά το κέλυφος θα αντικαθιστούσε το *my** με μια λίστα αρχείων που τα ονόματά τους ξεκινάνε με *my* στον τρέχοντα κατάλογο. Σε νεότερες εκδόσεις μπορεί να παραλειφθεί ο κατάλογος και θεωρείται σαν προκαθορισμένος ο τρέχων κατάλογος. *Προσέξτε ότι ο *'*** είναι εδώ χαρακτήρας  που έχει το νόημα με το οποίο χρησιμοποιείται σαν σύμβολο στην επέκταση κελύφους.''

===Μόνο αρχεία===
 find . -name "my*" -type f
Το όρισμα **-type** περιορίζει την αναζήτηση μόνο σε κανονικά αρχεία παραλείποντας καταλόγους, ειδικά αρχεία, συμβολικούς συνδέσμους, αρχεία σωληνώσεων κτλ,

===Εντολές===
Τα προηγούμενα παραδείγματα εμφάνιζαν μια λίστα με αποτελέσματα γιατί η προκαθορισμένη **ενέργεια** της εντολής <code>find</code> είναι να εκτελέσει την ενέργεια '-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 {} \;
Αυτή η εντολή θα αλλάξει τις [[:w:αδειες συστήματος αρχείων|Άδειες συστήματος αρχείων]] από όλα τα αρχεία του καταλόγου ''/var/ftp/mp3''. Η ενέργεια καθορίζεται με την επιλογή n <code>-exec [[chmod]] 744 {} \;</code> στην εντολή. Για κάθε αρχείο που το όνομα του τελειώνει σε <code>.mp3</code>,η εντολή <code>chmod 744 {}</code> εκτελείται αντικαθιστώντας την μεταβλητή <code>{}</code> με το όνομα του αρχείου.Η άνω τελεία **;''' (την οποία ακυρώνουμε με αριστερή πλάγια κάθετο για να μην την ερμηνεύσει το κέλυφος σαν διαχωριστικό εντολής) σηματοδοτεί το τέλος της εντολής. Οι άδειες `744`,εμφανίζονται συνήθως σαν  `rwxr--r--`, δίνοντας στον χρήστη πλήρη δικαιώματα να γράψει, διαβάσει και εκτελέσει, ενώ οι άλλοι χρήστες μπορούν μόνο να το διαβάσουν. Σε μερικά κελύφη το `{}` πρέπει να προστατευθεί με χρήση ειδικών χαρακτήρων.

## Δείτε επίσης
* Κατάλογος βοηθημάτων του Unix

Κατηγορία:Λογισμικό Unix