find (el)

Το πρόγραμμα find αναζητά αρχεία, μέσα σε κάποια συγκεκριμένη ιεραρχία φακέλων.

Χρήση του find

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

Σε μια πιο παραμετροποιήσιμη μορφή χρήσης, μπορεί να δεκτεί δύο παραμέτρους: τον φάκελο στον οποίο θα ψάξει (συμπεριλαμβάνοντας και τους υποφακέλους) και ένα μοτίβο (κανονική έκφραση) το οποίο θα προσπαθήσει να ταιρίαξει με τα ονόματα των περιεχόμενων αρχείων και φακέλων.

Για παράδειγμα, η πιο κάτω ιεραρχία φακέλων δείχνει έναν φάκελο με το όνομα «Μουσική», με υποφακέλους με ονόματα καλλιτεχνών, με υποφακέλους με ονόματα δίσκων. Μέσα στα ονόματα των δίσκων συμπεριλαμβάνεται σε παρένθεση η χρονολογία κυκλοφορίας κάθε δίσκου. Σχηματικά:

Μουσική
 |_ Φιλαρμονική Άνω Κάτω Χωριού
     |_ Κάλαντα (1990)
     |_ Χαρούμενα τραγούδια (1992)
     |_ Λυπημένα τραγούδια (1995)

Αν θέλετε να βρείτε μέσα σε μια τέτοια δομή φακέλων όλους τους δίσκους που κυκλοφόρησαν, για παράδειγμα, το 1995, θα δίνατε την εντολή:

{% highlight bash %} find Μουσική -name '*(1995)' {% endhighlight %}

Στην πιο πάνω εντολή, το αστεράκι παίζει το ρόλο του μπαλαντέρ, δηλαδή οποιοδήποτε όνομα αρχείου ή φακέλου μέσα στο «Μουσική» το οποίο ξεκινάει με οτιδήποτε και τελειώνει με «(1995)» θα ταιριάξει.

Αν δίνατε την εντολή find Μουσική (παραλείποντας δηλαδή το όνομα για το οποίο ψάχνετε), θα σας επέστρεφε μια λίστα με όλα τα περιεχόμενα, αρχεία και υποφακέλους που περιέχονται στο «Μουσική». Αν δίνατε find -name '*(1970)' (παραλείποντας δηλαδή τον φάκελο στον οποίο θέλετε να ψάξετε), τότε το find ψάχνει απλά στο φάκελο μέσα στον οποίο εκτελέστηκε η εντολή.

Είναι ακόμα δυνατή η αναζήτηση αρχείων βάσει του χρήστη στον οποίο ανήκουν, είτε με την επιλογή -user και παράμετρο το όνομα χρήστη, είτε με την επιλογή -uid και παράμετρο τον αριθμό ID του χρήστη. Αντίστοιχα, για αναζήτηση βάσει του group στο οποίο ανήκουν τα αρχεία/φάκελοι, χρησιμοποιείται η επιλογή -group ή -gid.

Τα πιο πάνω παραδείγμα δείχνουν την πιο στοιχειώδη λειτουργία του find. Πέρα από αυτά, υπάρχουν πάρα πολλές ακόμα παράμετροι, οι οποίες τεκμηριώνονται στο εγχειρίδιο του find (εκτελέστε man find), και οι οποίες επιτρέπουν αρκετά πιο συγκεκριμένο προσδιορισμό των αρχείων που θα επιστραφούν. Συγκεκριμένα, μερικά από τα κριτήρια που μπορείτε να ορίσετε είναι:

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

Posted on