Εγχειρίδια για τη γραμμή εντολών

Man » Find Manual online - λεπτομερής διαδικτυακή τεκμηρίωση για τη σελίδα man find

🌍
find - αναζητήστε αρχεία σε μια ιεραρχία καταλόγων

ΣΥΝΤΑΞΗ

find [-H] [-L] [-P] [-D debugopts] [-Olevel] [αρχικό-σημείο...] [έκφραση]

ΠΕΡΙΓΡΑΦΗ

Αυτή η σελίδα εγχειριδίου τεκμηριώνει την έκδοση GNU του find. Το GNU find αναζητά τον δέντρο καταλόγων που ξεκινά από κάθε δεδομένο αρχικό σημείο, αξιολογώντας την δεδομένη έκφραση από αριστερά προς τα δεξιά, σύμφωνα με τους κανόνες προτεραιότητας (δείτε την ενότητα ΟΠΕΡΑΤΟΡΕΣ), μέχρι το αποτέλεσμα να γίνει γνωστό (η αριστερή πλευρά είναι ψευδής για τις λειτουργίες and, αληθής για τις λειτουργίες or), οπότε το find μεταβαίνει στο επόμενο όνομα αρχείου. Εάν δεν καθοριστεί κανένα αρχικό σημείο, υποτίθεται ότι είναι το '.'.

Εάν χρησιμοποιείτε το find σε ένα περιβάλλον όπου η ασφάλεια είναι σημαντική (για παράδειγμα, εάν το χρησιμοποιείτε για να αναζητήσετε καταλόγους που είναι εγγράψιμοι από άλλους χρήστες), θα πρέπει να διαβάσετε το κεφάλαιο "Ζητήματα ασφαλείας" της τεκμηρίωσης findutils, το οποίο ονομάζεται "Εύρεση αρχείων" και συνοδεύει το findutils. Αυτό το έγγραφο περιλαμβάνει επίσης πολλές περισσότερες λεπτομέρειες και συζητήσεις από αυτήν τη σελίδα εγχειριδίου, επομένως μπορεί να το βρείτε μια πιο χρήσιμη πηγή πληροφοριών.

ΕΠΙΛΟΓΕΣ

Οι επιλογές -H, -L και -P ελέγχουν τη διαχείριση των συμβολικών συνδέσμων. Τα ορίσματα γραμμής εντολών που ακολουθούν αυτές τις επιλογές θεωρούνται ονόματα αρχείων ή καταλόγων που πρέπει να εξεταστούν, έως το πρώτο όρισμα που ξεκινά με '-' ή το όρισμα '(' ή '!'. Αυτό το όρισμα και τυχόν επόμενα ορίσματα θεωρούνται η έκφραση που περιγράφει τι πρέπει να αναζητηθεί. Εάν δεν δοθούν διαδρομές, χρησιμοποιείται ο τρέχων κατάλογος. Εάν δεν δοθεί έκφραση, χρησιμοποιείται η έκφραση -print (αλλά ίσως θα πρέπει να εξετάσετε το ενδεχόμενο να χρησιμοποιήσετε το -print0, ούτως ή άλλως).

Αυτή η σελίδα εγχειριδίου αναφέρεται στις "επιλογές" μέσα στη λίστα εκφράσεων. Αυτές οι επιλογές ελέγχουν τη συμπεριφορά του find, αλλά καθορίζονται αμέσως μετά το τελευταίο όνομα διαδρομής. Οι πέντε "πραγματικές" επιλογές -H, -L, -P, -D και -O πρέπει να εμφανίζονται πριν από το πρώτο όνομα διαδρομής, εάν υπάρχουν. Μια διπλή παύλα -- θα μπορούσε θεωρητικά να χρησιμοποιηθεί για να υποδείξει ότι τυχόν υπόλοιπα ορίσματα δεν είναι επιλογές, αλλά αυτό δεν λειτουργεί πραγματικά λόγω του τρόπου με τον οποίο το find καθορίζει το τέλος των ακόλουθων ορισμάτων διαδρομής: το κάνει διαβάζοντας έως ότου έρθει ένα όρισμα έκφρασης (το οποίο ξεκινά επίσης με '-'). Τώρα, εάν ένα όρισμα διαδρομής θα ξεκινά με '-', τότε το find θα το αντιμετωπίσει ως όρισμα έκφρασης. Επομένως, για να διασφαλιστεί ότι όλα τα αρχικά σημεία λαμβάνονται ως τέτοια και ειδικά για να αποφευχθεί το γεγονός ότι τα πρότυπα χαρακτήρων που αναπτύσσονται από το κέλυφος κλήσης δεν θεωρούνται κατά λάθος ως ορίσματα έκφρασης, είναι γενικά ασφαλέστερο να προθέσετε τα πρότυπα χαρακτήρων ή τα αμφίβολα ονόματα διαδρομής είτε με './' είτε να χρησιμοποιήσετε απόλυτα ονόματα διαδρομής που ξεκινούν με '/'. Εναλλακτικά, είναι γενικά ασφαλές, αν και όχι φορητό, να χρησιμοποιήσετε την επιλογή GNU -files0-from για να περάσετε αυθαίρετα αρχικά σημεία στο find.


-P     Μην ακολουθείτε ποτέ τους συμβολικούς συνδέσμους. Αυτή είναι η προεπιλεγμένη συμπεριφορά. Όταν το find εξετάζει ή εκτυπώνει πληροφορίες για αρχεία και το αρχείο είναι ένας συμβολικός σύνδεσμος, οι πληροφορίες που χρησιμοποιούνται θα πρέπει να λαμβάνονται από τις ιδιότητες του ίδιου του συμβολικού συνδέσμου.

-L     Ακολουθήστε τους συμβολικούς συνδέσμους. Όταν το find εξετάζει ή εκτυπώνει πληροφορίες για αρχεία, οι πληροφορίες που χρησιμοποιούνται θα πρέπει να λαμβάνονται από τις ιδιότητες του αρχείου στο οποίο δείχνει ο σύνδεσμος, και όχι από τον ίδιο τον σύνδεσμο (εκτός εάν είναι ένας κατεστραμμένος συμβολικός σύνδεσμος ή το find δεν μπορεί να εξετάσει το αρχείο στο οποίο δείχνει ο σύνδεσμος). Η χρήση αυτής της επιλογής συνεπάγεται την επιλογή -noleaf. Εάν αργότερα χρησιμοποιήσετε την επιλογή -P, η επιλογή -noleaf θα εξακολουθεί να ισχύει. Εάν η επιλογή -L είναι ενεργή και το find ανακαλύψει έναν συμβολικό σύνδεσμο σε έναν υποκατάλογο κατά τη διάρκεια της αναζήτησης, ο υποκατάλογος στον οποίο δείχνει ο συμβολικός σύνδεσμος θα αναζητηθεί.

Όταν η επιλογή -L είναι ενεργή, η πρόταση -type θα ταιριάζει πάντα με τον τύπο του αρχείου στο οποίο δείχνει ένας συμβολικός σύνδεσμος και όχι με τον ίδιο τον σύνδεσμο (εκτός εάν ο συμβολικός σύνδεσμος είναι κατεστραμμένος). Οι ενέργειες που μπορούν να προκαλέσουν τη δημιουργία κατεστραμμένων συμβολικών συνδέσμων κατά την εκτέλεση του find (για παράδειγμα, η επιλογή -delete) μπορούν να οδηγήσουν σε παραπλανητική συμπεριφορά. Η χρήση της επιλογής -L προκαλεί την επιστροφή της τιμής false από τις προτάσεις -lname και -ilname.

-H     Μην ακολουθείτε τους συμβολικούς συνδέσμους, εκτός από την επεξεργασία των ορισμάτων της γραμμής εντολών. Όταν το find εξετάζει ή εκτυπώνει πληροφορίες για αρχεία, οι πληροφορίες που χρησιμοποιούνται θα πρέπει να λαμβάνονται από τις ιδιότητες του ίδιου του συμβολικού συνδέσμου. Η μόνη εξαίρεση σε αυτήν τη συμπεριφορά είναι όταν ένα αρχείο που καθορίζεται στη γραμμή εντολών είναι ένας συμβολικός σύνδεσμος και ο σύνδεσμος μπορεί να επιλυθεί. Σε αυτήν την περίπτωση, οι πληροφορίες που χρησιμοποιούνται λαμβάνονται από το αρχείο στο οποίο δείχνει ο σύνδεσμος (δηλαδή, ο σύνδεσμος ακολουθείται). Οι πληροφορίες σχετικά με τον ίδιο τον σύνδεσμο χρησιμοποιούνται ως εφεδρική λύση εάν το αρχείο στο οποίο δείχνει ο συμβολικός σύνδεσμος δεν μπορεί να εξεταστεί. Εάν η επιλογή -H είναι ενεργή και μία από τις διαδρομές που καθορίζονται στη γραμμή εντολών είναι ένας συμβολικός σύνδεσμος σε έναν κατάλογο, το περιεχόμενο αυτού του καταλόγου θα εξεταστεί (αν και η επιλογή -maxdepth 0 θα το απέτρεπε).

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

Το GNU find συχνά στατιστικοποιεί αρχεία κατά την επεξεργασία των ορισμάτων της γραμμής εντολών, πριν ξεκινήσει οποιαδήποτε αναζήτηση. Αυτές οι επιλογές επηρεάζουν επίσης τον τρόπο με τον οποίο επεξεργάζονται αυτά τα ορίσματα. Συγκεκριμένα, υπάρχουν αρκετές δοκιμές που συγκρίνουν αρχεία που αναφέρονται στη γραμμή εντολών με ένα αρχείο που εξετάζουμε αυτήν τη στιγμή. Σε κάθε περίπτωση, το αρχείο που καθορίζεται στη γραμμή εντολών έχει εξεταστεί και ορισμένες από τις ιδιότητές του έχουν αποθηκευτεί. Εάν το καθορισμένο αρχείο είναι στην πραγματικότητα ένας συμβολικός σύνδεσμος και η επιλογή -P είναι ενεργή (ή εάν δεν έχουν καθοριστεί ούτε η -H ούτε η -L), οι πληροφορίες που χρησιμοποιούνται για τη σύγκριση θα ληφθούν από τις ιδιότητες του συμβολικού συνδέσμου. Διαφορετικά, θα ληφθούν από τις ιδιότητες του αρχείου στο οποίο δείχνει ο σύνδεσμος. Εάν το find δεν μπορεί να ακολουθήσει τον σύνδεσμο (για παράδειγμα, επειδή δεν έχει επαρκή δικαιώματα ή ο σύνδεσμος δείχνει σε ένα ανύπαρκτο αρχείο), οι ιδιότητες του ίδιου του συνδέσμου θα χρησιμοποιηθούν.

Όταν οι επιλογές -H ή -L είναι σε ισχύ, οποιοιδήποτε συμβολικοί σύνδεσμοι που αναφέρονται ως όρισμα της -newer θα αποσυμπιεστούν και η χρονική σήμανση θα λαμβάνεται από το αρχείο στο οποίο δείχνει ο συμβολικός σύνδεσμος. Η ίδια παράμετρος ισχύει για τις -newerXY, -anewer και -cnewer.

Η επιλογή -follow έχει παρόμοια επίδραση με την -L, αν και εφαρμόζεται στο σημείο όπου εμφανίζεται (δηλαδή, εάν δεν χρησιμοποιείται η -L αλλά η -follow, όλοι οι συμβολικοί σύνδεσμοι που εμφανίζονται μετά την -follow στην γραμμή εντολών θα αποσυμπιεστούν και εκείνοι που εμφανίζονται πριν από αυτήν δεν θα αποσυμπιεστούν).

-D debugopts

Εκτυπώνει διαγνωστικές πληροφορίες. Αυτό μπορεί να είναι χρήσιμο για να διαγνώσετε προβλήματα σχετικά με το γιατί το find δεν κάνει αυτό που θέλετε. Η λίστα των επιλογών εντοπισμού σφαλμάτων θα πρέπει να είναι διαχωρισμένη με κόμμα. Η συμβατότητα των επιλογών εντοπισμού σφαλμάτων δεν είναι εγγυημένη μεταξύ των εκδόσεων του findutils. Για μια πλήρη λίστα έγκυρων επιλογών εντοπισμού σφαλμάτων, δείτε την έξοδο της εντολής find -D help. Οι έγκυρες επιλογές εντοπισμού σφαλμάτων περιλαμβάνουν:

exec   Εμφανίζει διαγνωστικές πληροφορίες σχετικά με τις -exec, -execdir, -ok και -okdir.

opt    Εκτυπώνει διαγνωστικές πληροφορίες σχετικά με τη βελτιστοποίηση του δέντρου εκφράσεων. δείτε την επιλογή -O.

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

search Πλοηγείται στο δέντρο καταλόγων αναλυτικά.

stat   Εμφανίζει μηνύματα καθώς τα αρχεία εξετάζονται με τις κλήσεις συστήματος stat και lstat. Το πρόγραμμα find προσπαθεί να ελαχιστοποιήσει αυτές τις κλήσεις.

tree   Εμφανίζει το δέντρο εκφράσεων στην αρχική και βελτιστοποιημένη μορφή του.

all    Ενεργοποιεί όλες τις άλλες επιλογές εντοπισμού σφαλμάτων (αλλά όχι την help).

help   Εξηγεί τις επιλογές εντοπισμού σφαλμάτων.

-Olevel

Ενεργοποιεί τη βελτιστοποίηση ερωτημάτων. Το πρόγραμμα find αναδιατάσσει τις δοκιμές για να επιταχύνει την εκτέλεση, διατηρώντας παράλληλα τη συνολική επίδραση. Δηλαδή, οι κατηγορήσεις με παρενέργειες δεν αναδιατάσσονται μεταξύ τους. Οι βελτιστοποιήσεις που εκτελούνται σε κάθε επίπεδο βελτιστοποίησης είναι οι εξής:

0     Ισοδύναμο με το επίπεδο βελτιστοποίησης 1.

1     Αυτό είναι το προεπιλεγμένο επίπεδο βελτιστοποίησης και αντιστοιχεί στην παραδοσιακή συμπεριφορά. Οι εκφράσεις αναδιατάσσονται έτσι ώστε οι δοκιμές που βασίζονται μόνο στα ονόματα των αρχείων (για παράδειγμα, -name και -regex) να εκτελούνται πρώτα.

2     Οποιεσδήποτε δοκιμές -type ή -xtype εκτελούνται μετά από οποιεσδήποτε δοκιμές που βασίζονται μόνο στα ονόματα των αρχείων, αλλά πριν από οποιεσδήποτε δοκιμές που απαιτούν πληροφορίες από το inode. Σε πολλές σύγχρονες εκδόσεις του Unix, οι τύποι αρχείων επιστρέφονται από την readdir(), επομένως αυτές οι κατηγορήσεις είναι ταχύτερες στην αξιολόγησή τους από τις κατηγορήσεις που πρέπει πρώτα να κάνουν stat στο αρχείο. Εάν χρησιμοποιήσετε την κατηγορία -fstype FOO και καθορίσετε έναν τύπο συστήματος αρχείων FOO που δεν είναι γνωστός (δηλαδή, υπάρχει στο /etc/mtab) κατά την έναρξη του find, αυτή η κατηγορία είναι ισοδύναμη με την -false.

3 Σε αυτό το επίπεδο βελτιστοποίησης, ενεργοποιείται ο πλήρης βελτιστοποιητής ερωτημάτων που βασίζεται στο κόστος.
Η σειρά των ελέγχων τροποποιείται, έτσι ώστε οι φθηνοί (δηλαδή γρήγοροι) έλεγχοι να εκτελούνται πρώτοι και
οι πιο ακριβοί έλεγχοι να εκτελούνται αργότερα, εάν είναι απαραίτητο. Μέσα σε κάθε εύρος κόστους,
οι προϋποθέσεις αξιολογούνται νωρίτερα ή αργότερα, ανάλογα με το αν είναι πιθανό να επιτύχουν ή όχι.
Για το -o, οι προϋποθέσεις που είναι πιθανό να επιτύχουν αξιολογούνται νωρίτερα, και για το -a, οι προϋποθέσεις που είναι πιθανό να αποτύχουν αξιολογούνται νωρίτερα.

Ο βελτιστοποιητής που βασίζεται στο κόστος έχει μια σταθερή ιδέα για το πόσο πιθανό είναι να επιτύχει οποιοσδήποτε δεδομένος έλεγχος. Σε ορισμένες περιπτώσεις, η πιθανότητα λαμβάνει υπόψη τη συγκεκριμένη φύση του ελέγχου (για παράδειγμα, ο έλεγχος -type f θεωρείται ότι είναι πιο πιθανό να επιτύχει από τον έλεγχο -type c). Ο βελτιστοποιητής που βασίζεται στο κόστος αυτήν τη στιγμή αξιολογείται. Εάν δεν βελτιώνει πραγματικά την απόδοση του find, θα αφαιρεθεί ξανά. Αντίθετα, οι βελτιστοποιήσεις που αποδεικνύονται αξιόπιστες, ανθεκτικές και αποτελεσματικές μπορεί να ενεργοποιηθούν σε χαμηλότερα επίπεδα βελτιστοποίησης με την πάροδο του χρόνου. Ωστόσο, η προεπιλεγμένη συμπεριφορά (δηλαδή το επίπεδο βελτιστοποίησης 1) δεν θα αλλάξει στην σειρά εκδόσεων 4.3.x. Η σουίτα δοκιμών του findutils εκτελεί όλες τις δοκιμές στο find σε κάθε επίπεδο βελτιστοποίησης και διασφαλίζει ότι το αποτέλεσμα είναι το ίδιο.

Η επαναδιάταξη των λειτουργιών που εκτελεί ο βελτιστοποιητής που βασίζεται στο κόστος μπορεί να οδηγήσει σε αλλαγές στη συμπεριφορά που είναι ορατές στον χρήστη. Για παράδειγμα, οι προϋποθέσεις -readable και -empty είναι ευαίσθητες στην επαναδιάταξη. Εάν εκτελεστούν με τη σειρά -empty -readable, θα εμφανιστεί ένα μήνυμα σφάλματος για μη αναγνώσιμους καταλόγους. Εάν εκτελεστούν με τη σειρά -readable -empty, δεν θα εμφανιστεί κανένα μήνυμα σφάλματος. Αυτός είναι ο λόγος για τον οποίο μια τέτοια επαναδιάταξη λειτουργιών δεν εκτελείται στο προεπιλεγμένο επίπεδο βελτιστοποίησης.

ΕΚΦΡΑΣΗ

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

Δοκιμές Οι δοκιμές επιστρέφουν μια τιμή true ή false, συνήθως με βάση κάποια ιδιότητα του αρχείου που εξετάζουμε. Η δοκιμή -empty, για παράδειγμα, είναι true μόνο όταν το τρέχον αρχείο είναι κενό.

Ενέργειες Οι ενέργειες έχουν παρενέργειες (όπως η εκτύπωση κάτι στην τυπική έξοδο) και επιστρέφουν είτε true είτε false, συνήθως με βάση το αν ήταν επιτυχείς ή όχι. Η ενέργεια -print, για παράδειγμα, εκτυπώνει το όνομα του τρέχοντος αρχείου στην τυπική έξοδο.

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

Θέσιες επιλογές Οι θέσιες επιλογές επηρεάζουν μόνο τις δοκιμές ή τις ενέργειες που ακολουθούν. Οι θέσιες επιλογές επιστρέφουν πάντα την τιμή true. Η επιλογή -regextype, για παράδειγμα, είναι θέσια, καθορίζοντας τη διάλεκτο των κανονικών εκφράσεων για τις κανονικές εκφράσεις που εμφανίζονται αργότερα στη γραμμή εντολών.


Τελεστές Οι τελεστές συνδέουν τα άλλα στοιχεία μέσα στην έκφραση. Περιλαμβάνουν, για παράδειγμα, -o (που σημαίνει λογικό OR) και -a (που σημαίνει λογικό AND). Όταν λείπει ένας τελεστής, υποτίθεται το -a.

Η ενέργεια -print εκτελείται σε όλα τα αρχεία για τα οποία η συνολική έκφραση είναι αληθής, εκτός εάν περιέχει μια άλλη ενέργεια εκτός από -prune ή -quit. Ενέργειες που αναστέλλουν την προεπιλεγμένη ενέργεια -print είναι -delete, -exec, -execdir, -ok, -okdir, -fls, -fprint, -fprintf, -ls, -print και -printf.

Η ενέργεια -delete λειτουργεί επίσης σαν επιλογή (αφού υπονοεί το -depth).

ΘΕΣΙΑΚΕΣ ΕΠΙΛΟΓΕΣ

Οι θεσιακές επιλογές επιστρέφουν πάντα true. Επηρεάζουν μόνο τις δοκιμές που εμφανίζονται αργότερα στη γραμμή εντολών.

-daystart

Μετρήστε τους χρόνους (για -amin, -atime, -cmin, -ctime, -mmin και -mtime) από την αρχή της σήμερα αντί από τις 24 ώρες πριν. Αυτή η επιλογή επηρεάζει μόνο τις δοκιμές που εμφανίζονται αργότερα στη γραμμή εντολών.

-follow

Κατάργηση· χρησιμοποιήστε την επιλογή -L. Ακολουθήστε τους συμβολικούς συνδέσμους. Υπονοεί -noleaf. Η επιλογή -follow επηρεάζει μόνο τις δοκιμές που εμφανίζονται μετά από αυτήν στη γραμμή εντολών. Εκτός αν η επιλογή -H ή -L έχει καθοριστεί, η θέση της επιλογής -follow αλλάζει τη συμπεριφορά του κατηγορηματικού -newer· οποιαδήποτε αρχεία που αναφέρονται ως όρισμα του -newer θα ακολουθούνται εάν είναι συμβολικοί σύνδεσμοι. Το ίδιο ισχύει και για -newerXY, -anewer και -cnewer. Ομοίως, το κατηγορηματικό -type θα αντιστοιχεί πάντα στον τύπο του αρχείου στο οποίο δείχνει ένας συμβολικός σύνδεσμος και όχι στον ίδιο τον σύνδεσμο. Η χρήση του -follow προκαλεί το -lname και το -ilname να επιστρέφουν πάντα false.

-regextype type

Αλλάζει τη σύνταξη κανονικών εκφράσεων που κατανοούν οι δοκιμές -regex και -iregex που εμφανίζονται αργότερα στη γραμμή εντολών. Για να δείτε ποιες κανονικές εκφράσεις είναι γνωστές, χρησιμοποιήστε το -regextype help. Το έγγραφο Texinfo (δείτε ΤΕΛΕΙΩΣΕ) εξηγεί τη σημασία και τις διαφορές μεταξύ των διαφόρων τύπων κανονικών εκφράσεων. Εάν δεν χρησιμοποιήσετε αυτήν την επιλογή, το find συμπεριφέρεται σαν να είχε καθοριστεί ο τύπος κανονικής έκφρασης emacs.

-warn, -nowarn

Ενεργοποιήστε ή απενεργοποιήστε τα μηνύματα προειδοποίησης. Αυτές οι προειδοποιήσεις ισχύουν μόνο για τη χρήση της γραμμής εντολών και όχι σε οποιεσδήποτε συνθήκες που μπορεί να αντιμετωπίσει το find κατά την αναζήτηση καταλόγων. Η προεπιλεγμένη συμπεριφορά αντιστοιχεί στο -warn εάν η τυπική είσοδος είναι ένα tty και στο -nowarn διαφορετικά. Εάν δημιουργηθεί ένα μήνυμα προειδοποίησης που σχετίζεται με τη χρήση της γραμμής εντολών, η κατάσταση εξόδου του find δεν επηρεάζεται. Εάν η μεταβλητή περιβάλλοντος POSIXLY_CORRECT έχει οριστεί και χρησιμοποιείται επίσης το -warn, δεν καθορίζεται εάν θα εμφανιστούν προειδοποιήσεις.

ΠΑΓΚΟΣΜΙΕΣ ΕΠΙΛΟΓΕΣ

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


Οι καθολικές επιλογές εμφανίζονται μετά τη λίστα των σημείων εκκίνησης και, επομένως, δεν είναι του ίδιου τύπου με την επιλογή -L, για παράδειγμα.

-d  Συνώνυμο για την επιλογή -depth, για συμβατότητα με τα FreeBSD, NetBSD, MacOS X και OpenBSD.

-depth  Επεξεργαστείτε τα περιεχόμενα κάθε καταλόγου πριν από τον ίδιο τον κατάλογο. Η ενέργεια -delete υποδηλώνει επίσης την επιλογή -depth.

-files0-from file
Διαβάστε τα σημεία εκκίνησης από το αρχείο αντί να τα λαμβάνετε από τη γραμμή εντολών. Σε αντίθεση με τους γνωστούς περιορισμούς της μεταβίβασης σημείων εκκίνησης μέσω των ορισμάτων στη γραμμή εντολών, συγκεκριμένα τον περιορισμό του αριθμού των ονομάτων αρχείων και την εγγενή ασάφεια των ονομάτων αρχείων που συγκρούονται με τα ονόματα των επιλογών, η χρήση αυτής της επιλογής επιτρέπει την ασφαλή μεταβίβαση ενός αυθαίρετου αριθμού σημείων εκκίνησης στην εντολή find.

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

Το όρισμα αρχείου είναι υποχρεωτικό. Μπορείτε να χρησιμοποιήσετε την επιλογή -files0-from - για να διαβάσετε τη λίστα των σημείων εκκίνησης από την τυπική είσοδο, π.χ. από μια σωλήνα. Σε αυτήν την περίπτωση, οι ενέργειες -ok και -okdir δεν επιτρέπονται, επειδή θα παρεμβάλλονταν προφανώς στην ανάγνωση από την τυπική είσοδο για να ληφθεί η επιβεβαίωση του χρήστη.

Τα σημεία εκκίνησης στο αρχείο πρέπει να διαχωρίζονται με χαρακτήρες ASCII NUL. Δύο διαδοχικοί χαρακτήρες NUL, δηλαδή ένα σημείο εκκίνησης με ένα αρχείο μηδενικού μήκους, δεν επιτρέπονται και θα οδηγήσουν σε ένα μήνυμα σφάλματος ακολουθούμενο από μια μη μηδενική τιμή εξόδου αργότερα.

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

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

Πρόσθετες σημειώσεις: εάν ένα αρχείο αναφέρεται περισσότερες από μία φορές στην είσοδο, δεν είναι σαφές εάν θα επισκεφθεί περισσότερες από μία φορές. Εάν το αρχείο τροποποιηθεί κατά τη διάρκεια της λειτουργίας της εντολής find, το αποτέλεσμα είναι επίσης απροσδιόριστο. Τέλος, η θέση αναζήτησης εντός του καθορισμένου αρχείου κατά τη στιγμή που η εντολή find τερματίζεται, είτε με την επιλογή -quit είτε με οποιονδήποτε άλλο τρόπο, είναι επίσης απροσδιόριστη. Με τον όρο "απροσδιόριστο" εννοείται ότι μπορεί να λειτουργήσει ή να κάνει κάτι συγκεκριμένο ή όχι, και ότι η συμπεριφορά μπορεί να αλλάξει από πλατφόρμα σε πλατφόρμα ή από έκδοση του findutils σε έκδοση.

-help, --help
Εμφάνιση μιας περίληψης της χρήσης της εντολής στη γραμμή εντολών της εντολής find και έξοδος.

-ignore_readdir_race
Κανονικά, η εντολή find θα εκδίδει ένα μήνυμα σφάλματος όταν αποτυγχάνει να ανακτήσει τις πληροφορίες ενός αρχείου. Εάν δώσετε αυτήν την επιλογή και ένα αρχείο διαγραφεί μεταξύ της στιγμής που η εντολή find διαβάζει το όνομα του αρχείου από τον κατάλογο και της στιγμής που προσπαθεί να ανακτήσει τις πληροφορίες του αρχείου, δεν θα εκδοθεί κανένα μήνυμα σφάλματος. Αυτό ισχύει επίσης για τα αρχεία ή τους καταλόγους των οποίων τα ονόματα δίνονται στη γραμμή εντολών. Αυτή η επιλογή έχει ισχύ τη στιγμή που διαβάζεται η γραμμή εντολών, πράγμα που σημαίνει ότι δεν μπορείτε να αναζητήσετε ένα μέρος του συστήματος αρχείων με αυτήν την επιλογή ενεργοποιημένη και ένα άλλο μέρος του συστήματος αρχείων με αυτήν την επιλογή απενεργοποιημένη (εάν χρειάζεται να το κάνετε αυτό, θα πρέπει να εκδώσετε δύο εντολές find, μία με την επιλογή και μία χωρίς αυτήν).

Επιπλέον, η χρήση της επιλογής -ignore_readdir_race θα αγνοήσει τα σφάλματα της ενέργειας -delete στην περίπτωση που το αρχείο έχει εξαφανιστεί από τότε που διαβάστηκε ο γονικός κατάλογος: δεν θα εμφανίσει ένα μήνυμα σφάλματος και η τιμή επιστροφής της ενέργειας -delete θα είναι true.

-maxdepth levels

Κατεβείτε το πολύ levels (ένας μη αρνητικός ακέραιος) επίπεδα καταλόγων κάτω από τα σημεία εκκίνησης. Η χρήση του -maxdepth 0 σημαίνει ότι οι έλεγχοι και οι ενέργειες θα εφαρμόζονται μόνο στα ίδια τα σημεία εκκίνησης.

-mindepth levels

Μην εφαρμόζετε κανέναν έλεγχο ή ενέργεια σε επίπεδα μικρότερα του levels (ένας μη αρνητικός ακέραιος). Η χρήση του -mindepth 1 σημαίνει ότι θα υποβληθούν σε επεξεργασία όλα τα αρχεία εκτός από τα σημεία εκκίνησης.

-mount Μην κατεβείτε σε καταλόγους σε άλλα συστήματα αρχείων. Μια εναλλακτική ονομασία για το -xdev, για συμβατότητα με ορισμένες άλλες εκδόσεις του find.

-noignore_readdir_race

Απενεργοποιεί την επίδραση του -ignore_readdir_race.

-noleaf

Μην βελτιστοποιείτε υποθέτοντας ότι οι κατάλογοι περιέχουν 2 λιγότερους υποκαταλόγους από τον αριθμό των σκληρών συνδέσμων τους. Αυτή η επιλογή είναι απαραίτητη κατά την αναζήτηση συστημάτων αρχείων που δεν ακολουθούν τη σύμβαση σύνδεσης καταλόγων Unix, όπως τα CD-ROM ή τα συστήματα αρχείων MS-DOS ή τα σημεία σύνδεσης τόμου AFS. Κάθε κατάλογος σε ένα κανονικό σύστημα αρχείων Unix έχει τουλάχιστον 2 σκληρούς συνδέσμους: το όνομά του και την καταχώρησή του '. Επιπλέον, οι υποκατάλογοί του (εάν υπάρχουν) έχουν ο καθένας μια καταχώρηση '..' συνδεδεμένη με αυτόν τον κατάλογο. Όταν το find εξετάζει έναν κατάλογο, αφού έχει πραγματοποιήσει stat 2 λιγότερους υποκαταλόγους από τον αριθμό των συνδέσμων του καταλόγου, γνωρίζει ότι τα υπόλοιπα στοιχεία στον κατάλογο δεν είναι κατάλογοι ('leaf' αρχεία στο δέντρο καταλόγων). Εάν είναι απαραίτητο να εξεταστούν μόνο τα ονόματα των αρχείων, δεν χρειάζεται να γίνει stat σε αυτά. αυτό δίνει μια σημαντική αύξηση στην ταχύτητα αναζήτησης.

-version, --version

Εμφάνιση του αριθμού έκδοσης του find και έξοδος.

-xdev Μην κατεβείτε σε καταλόγους σε άλλα συστήματα αρχείων.

ΔΟΚΙΜΕΣ

Ορισμένες δοκιμές, για παράδειγμα οι -newerXY και -samefile, επιτρέπουν τη σύγκριση μεταξύ του αρχείου που εξετάζεται αυτήν τη στιγμή και ενός αρχείου αναφοράς που καθορίζεται στη γραμμή εντολών. Όταν χρησιμοποιούνται αυτές οι δοκιμές, η ερμηνεία του αρχείου αναφοράς καθορίζεται από τις επιλογές -H, -L και -P και από τυχόν προηγούμενες επιλογές -follow, αλλά το αρχείο αναφοράς εξετάζεται μόνο μία φορά, κατά την ανάλυση της γραμμής εντολών. Εάν το αρχείο αναφοράς δεν μπορεί να εξεταστεί (για παράδειγμα, εάν η κλήση συστήματος stat(2) αποτύχει για αυτό), εμφανίζεται ένα μήνυμα σφάλματος και το find εξέρχεται με μη μηδενική κατάσταση.


Ένα αριθμητικό όρισμα n μπορεί να καθοριστεί για τις δοκιμές (όπως -amin, -mtime, -gid, -inum, -links, -size, -uid και -used) ως εξής:

+n για μεγαλύτερο από n,

-n για μικρότερο από n,

n για ακριβώς n.

Υποστηριζόμενες δοκιμές:

-amin n

Το αρχείο προσπελάστηκε για τελευταία φορά πριν από n λεπτά, είτε λιγότερο, είτε περισσότερο, είτε ακριβώς.

-anewer reference

Ο χρόνος της τελευταίας πρόσβασης στο τρέχον αρχείο είναι πιο πρόσφατος από τον χρόνο της τελευταίας τροποποίησης δεδομένων του αρχείου αναφοράς. Εάν το reference είναι ένας συμβολικός σύνδεσμος και η επιλογή -H ή η επιλογή -L είναι ενεργή, τότε χρησιμοποιείται πάντα ο χρόνος της τελευταίας τροποποίησης δεδομένων του αρχείου στο οποίο δείχνει.

-atime n

Το αρχείο προσπελάστηκε για τελευταία φορά πριν από n*24 ώρες, είτε λιγότερο, είτε περισσότερο, είτε ακριβώς. Όταν το find υπολογίζει πόσες 24ωρες περιόδους πριν προσπελάστηκε για τελευταία φορά το αρχείο, οποιοδήποτε δεκαδικό μέρος αγνοείται, επομένως για να ταιριάζει το -atime +1, ένα αρχείο πρέπει να έχει προσπελαστεί τουλάχιστον πριν από δύο ημέρες.

-cmin n

Η κατάσταση του αρχείου άλλαξε για τελευταία φορά πριν από n λεπτά, είτε λιγότερο, είτε περισσότερο, είτε ακριβώς.

-cnewer reference

Ο χρόνος της τελευταίας αλλαγής κατάστασης του τρέχοντος αρχείου είναι πιο πρόσφατος από τον χρόνο της τελευταίας τροποποίησης δεδομένων του αρχείου αναφοράς. Εάν το reference είναι ένας συμβολικός σύνδεσμος και η επιλογή -H ή η επιλογή -L είναι ενεργή, τότε χρησιμοποιείται πάντα ο χρόνος της τελευταίας τροποποίησης δεδομένων του αρχείου στο οποίο δείχνει.

-ctime n

Η κατάσταση του αρχείου άλλαξε για τελευταία φορά πριν από n*24 ώρες, είτε λιγότερο, είτε περισσότερο, είτε ακριβώς. Δείτε τις σημειώσεις για το -atime για να κατανοήσετε πώς η στρογγυλοποίηση επηρεάζει την ερμηνεία των χρόνων αλλαγής κατάστασης του αρχείου.

-empty Το αρχείο είναι άδειο και είναι είτε ένα κανονικό αρχείο είτε ένας κατάλογος.

-executable

Αντιστοιχεί σε αρχεία που είναι εκτελέσιμα και σε καταλόγους που είναι αναζητήσιμοι (με την έννοια της επίλυσης ονομάτων αρχείων) από τον τρέχοντα χρήστη. Αυτό λαμβάνει υπόψη τις λίστες ελέγχου πρόσβασης και άλλα αντικείμενα αδειών που η δοκιμή -perm αγνοεί. Αυτή η δοκιμή χρησιμοποιεί την κλήση συστήματος access(2) και επομένως μπορεί να ξεγελαστεί από διακομιστές NFS που χρησιμοποιούν αντιστοίχιση UID (ή rootsquashing), επειδή πολλά συστήματα υλοποιούν το access(2) στον πυρήνα του πελάτη και επομένως δεν μπορούν να χρησιμοποιήσουν τις πληροφορίες αντιστοίχισης UID που διατηρούνται στον διακομιστή. Επειδή αυτή η δοκιμή βασίζεται μόνο στο αποτέλεσμα της κλήσης συστήματος access(2), δεν υπάρχει καμία εγγύηση ότι ένα αρχείο για το οποίο αυτή η δοκιμή είναι επιτυχής μπορεί πραγματικά να εκτελεστεί.

-false Πάντα ψευδές.

-fstype type

Το αρχείο βρίσκεται σε ένα σύστημα αρχείων τύπου type. Οι έγκυροι τύποι συστημάτων αρχείων διαφέρουν μεταξύ των διαφόρων εκδόσεων του Unix. Μια ατελής λίστα τύπων συστημάτων αρχείων που γίνονται δεκτοί σε κάποια έκδοση του Unix είναι: ufs, 4.2, 4.3, nfs, tmp, mfs, S51K, S52K. Μπορείτε να χρησιμοποιήσετε το -printf με την οδηγία %F για να δείτε τους τύπους των συστημάτων αρχείων σας.

-gid n

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

-group gname

Το αρχείο ανήκει στην ομάδα gname (επιτρέπεται αριθμητικό αναγνωριστικό ομάδας).

-ilname pattern

Όπως το -lname, αλλά η αντιστοίχιση δεν λαμβάνει υπόψη την διάκριση πεζών-κεφαλαίων. Εάν η επιλογή -L ή η επιλογή -follow είναι ενεργή, αυτή η δοκιμή επιστρέφει ψευδές εκτός εάν ο συμβολικός σύνδεσμος είναι κατεστραμμένος.


-iname μοτίβο

Όπως το -name, αλλά η αντιστοίχιση δεν λαμβάνει υπόψη τα πεζά-κεφαλαία. Για παράδειγμα, τα μοτίβα fo\* και F?? συμφωνούν με τα ονόματα αρχείων Foo, FOO, foo, fOo κ.λπ. Το μοτίβο \*foo\* θα συμφωνεί επίσης με ένα αρχείο που ονομάζεται .foobar.

-inum n

Το αρχείο έχει αριθμό inode μικρότερο, μεγαλύτερο ή ακριβώς n. Συνήθως είναι πιο εύκολο να χρησιμοποιήσετε τη δοκιμή -samefile.

-ipath μοτίβο

Όπως το -path, αλλά η αντιστοίχιση δεν λαμβάνει υπόψη τα πεζά-κεφαλαία.

-iregex μοτίβο

Όπως το -regex, αλλά η αντιστοίχιση δεν λαμβάνει υπόψη τα πεζά-κεφαλαία.

-iwholename μοτίβο

Δείτε το -ipath. Αυτή η εναλλακτική λύση είναι λιγότερο φορητή από το -ipath.

-links n

Το αρχείο έχει λιγότερες, περισσότερες ή ακριβώς n σκληρές συνδέσεις.

-lname μοτίβο

Το αρχείο είναι ένας συμβολικός σύνδεσμος του οποίου το περιεχόμενο ταιριάζει με το μοτίβο shell μοτίβο. Τα μεταχαρακτήρες δεν αντιμετωπίζουν τα /' ή.' με ιδιαίτερο τρόπο. Εάν η επιλογή -L ή η επιλογή -follow είναι σε ισχύ, αυτή η δοκιμή θα επιστρέψει false, εκτός εάν ο συμβολικός σύνδεσμος είναι κατεστραμμένος.

-mmin n

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

-mtime n

Τα δεδομένα του αρχείου τροποποιήθηκαν για τελευταία φορά πριν από λιγότερες, περισσότερες ή ακριβώς n*24 ώρες. Δείτε τα σχόλια για το -atime για να κατανοήσετε πώς η στρογγυλοποίηση επηρεάζει την ερμηνεία των χρόνων τροποποίησης αρχείων.

-name μοτίβο

Η βάση του ονόματος αρχείου (η διαδρομή με τις αρχικές καταχωρήσεις αφαιρεμένες) ταιριάζει με το μοτίβο shell μοτίβο. Επειδή οι αρχικές καταχωρήσεις των ονομάτων αρχείων αφαιρούνται, το μοτίβο δεν πρέπει να περιλαμβάνει μια κάθετο, επειδή το -name a/b δεν θα ταιριάζει ποτέ με κάτι (και πιθανότατα θα θέλετε να χρησιμοποιήσετε το -path αντί αυτού). Μια εξαίρεση σε αυτό είναι όταν χρησιμοποιείται μόνο μια κάθετος ως μοτίβο (-name /), επειδή αυτή είναι μια έγκυρη συμβολοσειρά για την αντιστοίχιση του καταλόγου ρίζας "/" (επειδή το βασικό όνομα του "/" είναι "/"). Εμφανίζεται μια προειδοποίηση εάν προσπαθήσετε να περάσετε ένα μοτίβο που περιέχει μια κάθετο, αλλά δεν αποτελείται αποκλειστικά από αυτήν, εκτός εάν η μεταβλητή περιβάλλοντος POSIXLY_CORRECT έχει οριστεί ή η επιλογή -nowarn χρησιμοποιείται.

Για να αγνοήσετε έναν κατάλογο και τα αρχεία που περιέχει, χρησιμοποιήστε το -prune αντί να ελέγχετε κάθε αρχείο στο δέντρο. δείτε ένα παράδειγμα στην περιγραφή αυτής της ενέργειας. Οι αγκύλες δεν αναγνωρίζονται ως ειδικές, παρά το γεγονός ότι ορισμένα shells, συμπεριλαμβανομένου του Bash, δίνουν στις αγκύλες μια ειδική σημασία στα μοτίβα shell. Η αντιστοίχιση ονομάτων αρχείων εκτελείται με τη χρήση του συνάρτηση βιβλιοθήκης fnmatch(3). Μην ξεχνάτε να περικλείετε το μοτίβο σε εισαγωγικά για να το προστατεύσετε από την επέκταση από το shell.

-newer αναφορά

Ο χρόνος της τελευταίας τροποποίησης δεδομένων του τρέχοντος αρχείου είναι πιο πρόσφατος από αυτόν του τελευταίας τροποποίησης δεδομένων του αρχείου αναφοράς. Εάν το αναφορά είναι ένας συμβολικός σύνδεσμος και η επιλογή -H ή η επιλογή -L είναι σε ισχύ, τότε χρησιμοποιείται πάντα ο χρόνος της τελευταίας τροποποίησης δεδομένων του αρχείου στο οποίο δείχνει.

-newerXY αναφορά

Επιτυγχάνει εάν η χρονική σήμανση X του αρχείου που εξετάζεται είναι νεότερη από τη χρονική σήμανση Y του αρχείου αναφοράς. Τα γράμματα X και Y μπορούν να είναι οποιοδήποτε από τα ακόλουθα γράμματα:


a   Ο χρόνος πρόσβασης του αρχείου αναφοράς
B   Ο χρόνος δημιουργίας του αρχείου αναφοράς
c   Ο χρόνος αλλαγής του inode της αναφοράς
m   Ο χρόνος τροποποίησης του αρχείου αναφοράς
t   Η αναφορά ερμηνεύεται απευθείας ως χρόνος

Ορισμένοι συνδυασμοί είναι άκυροι. για παράδειγμα, είναι άκυρο εάν το X είναι t. Ορισμένοι συνδυασμοί δεν υποστηρίζονται σε όλα τα συστήματα. για παράδειγμα, το B δεν υποστηρίζεται σε όλα τα συστήματα. Εάν καθοριστεί ένας άκυρος ή μη υποστηριζόμενος συνδυασμός XY, προκύπτει ένα θανατηφόρο σφάλμα. Οι προδιαγραφές χρόνου ερμηνεύονται όπως και το όρισμα της επιλογής -d της εντολής GNU date. Εάν προσπαθήσετε να χρησιμοποιήσετε τον χρόνο δημιουργίας ενός αρχείου αναφοράς και ο χρόνος δημιουργίας δεν μπορεί να προσδιοριστεί, θα προκύψει ένα θανατηφόρο μήνυμα σφάλματος. Εάν καθορίσετε μια δοκιμή που αναφέρεται στον χρόνο δημιουργίας αρχείων που εξετάζονται, αυτή η δοκιμή θα αποτύχει για οποιαδήποτε αρχεία όπου ο χρόνος δημιουργίας είναι άγνωστος.

-nogroup

Δεν υπάρχει ομάδα που να αντιστοιχεί στο αριθμητικό αναγνωριστικό ομάδας του αρχείου.

-nouser

Δεν υπάρχει χρήστης που να αντιστοιχεί στο αριθμητικό αναγνωριστικό χρήστη του αρχείου.

-path μοτίβο

Το όνομα αρχείου ταιριάζει με το μοτίβο shell μοτίβο. Οι μετα-χαρακτήρες δεν αντιμετωπίζουν το `/ή το \.` ειδικά. έτσι, για παράδειγμα, find . -path "./sr*sc" θα εκτυπώσει μια καταχώρηση για έναν κατάλογο με όνομα ./src/misc (εάν υπάρχει). Για να αγνοήσετε ολόκληρο έναν δέντρο καταλόγων, χρησιμοποιήστε το -prune αντί να ελέγχετε κάθε αρχείο στο δέντρο. Σημειώστε ότι η δοκιμή αντιστοίχισης μοτίβου ισχύει για ολόκληρο το όνομα του αρχείου, ξεκινώντας από ένα από τα σημεία εκκίνησης που καθορίζονται στην εντολή. Θα είχε νόημα να χρησιμοποιήσετε μια απόλυτη ονομασία διαδρομής εδώ μόνο εάν το σχετικό σημείο εκκίνησης είναι επίσης μια απόλυτη διαδρομή. Αυτό σημαίνει ότι αυτή η εντολή δεν θα ταιριάζει ποτέ με τίποτα: find bar -path /foo/bar/myfile -print Η εντολή Find συγκρίνει το όρισμα -path με τη συνένωση ενός ονόματος καταλόγου και του βασικού ονόματος του αρχείου που εξετάζει. Δεδομένου ότι η συνένωση δεν θα τελειώνει ποτέ με μια κάθετο, τα ορίσματα -path που τελειώνουν με μια κάθετο δεν θα ταιριάζουν με τίποτα (εκτός ίσως ενός σημείου εκκίνησης που καθορίζεται στην εντολή). Το κατηγόρημα -path υποστηρίζεται επίσης από την εντολή HP-UX find και αποτελεί μέρος του προτύπου POSIX 2008.

-perm τρόπος

Τα bits δικαιωμάτων του αρχείου είναι ακριβώς τρόπος (οκταδικό ή συμβολικό). Επειδή απαιτείται ακριβής αντιστοίχιση, εάν θέλετε να χρησιμοποιήσετε αυτήν τη μορφή για συμβολικές λειτουργίες, ίσως χρειαστεί να καθορίσετε μια αρκετά πολύπλοκη συμβολοσειρά λειτουργίας. Για παράδειγμα, το -perm g=w θα ταιριάζει μόνο με αρχεία που έχουν λειτουργία 0020 (δηλαδή, αρχεία για τα οποία η δικαίωμα εγγραφής ομάδας είναι το μόνο δικαίωμα που έχει οριστεί). Είναι πιο πιθανό να θέλετε να χρησιμοποιήσετε τις μορφές / ή -, για παράδειγμα, -perm -g=w, το οποίο ταιριάζει με οποιοδήποτε αρχείο με δικαίωμα εγγραφής ομάδας. Δείτε την ενότητα ΠΑΡΑΔΕΙΓΜΑΤΑ για ορισμένα παραδείγματα.

-perm -τρόπος

Όλα τα bits δικαιωμάτων τρόπος έχουν οριστεί για το αρχείο. Οι συμβολικές λειτουργίες γίνονται δεκτές σε αυτήν τη μορφή και συνήθως αυτός είναι ο τρόπος με τον οποίο θα θέλατε να τις χρησιμοποιήσετε. Πρέπει να καθορίσετε το u, το g ή το o εάν χρησιμοποιείτε μια συμβολική λειτουργία. Δείτε την ενότητα ΠΑΡΑΔΕΙΓΜΑΤΑ για ορισμένα παραδείγματα.

-perm /τρόπος

Οποιοδήποτε από τα bits δικαιωμάτων τρόπος έχουν οριστεί για το αρχείο. Οι συμβολικές λειτουργίες γίνονται δεκτές σε αυτήν τη μορφή. Πρέπει να καθορίσετε το u, το g ή το o εάν χρησιμοποιείτε μια συμβολική λειτουργία. Δείτε την ενότητα ΠΑΡΑΔΕΙΓΜΑΤΑ για ορισμένα παραδείγματα. Εάν δεν έχουν οριστεί bits δικαιωμάτων στο τρόπος, αυτή η δοκιμή ταιριάζει με οποιοδήποτε αρχείο (η ιδέα εδώ είναι να είναι συνεπής με τη συμπεριφορά του -perm -000).


-perm +mode

Δεν υποστηρίζεται πλέον (και έχει καταργηθεί από το 2005). Χρησιμοποιήστε -perm /mode αντ' αυτού.

-readable

Αντιστοιχεί σε αρχεία που είναι αναγνώσιμα από τον τρέχοντα χρήστη. Αυτό λαμβάνει υπόψη τις λίστες ελέγχου πρόσβασης και άλλα αντικείμενα δικαιωμάτων, τα οποία η δοκιμή -perm αγνοεί. Αυτή η δοκιμή χρησιμοποιεί την κλήση συστήματος access(2) και, επομένως, μπορεί να εξαπατηθεί από διακομιστές NFS που χρησιμοποιούν αντιστοίχιση UID (ή root-squashing), επειδή πολλά συστήματα υλοποιούν το access(2) στον πυρήνα του πελάτη και, επομένως, δεν μπορούν να χρησιμοποιήσουν τις πληροφορίες αντιστοίχισης UID που διατηρούνται στον διακομιστή.

-regex pattern

Το όνομα του αρχείου ταιριάζει με την κανονική έκφραση pattern. Αυτό είναι ένα αντιστοίχιση σε ολόκληρη τη διαδρομή, όχι μια αναζήτηση. Για παράδειγμα, για να ταιριάξετε ένα αρχείο με όνομα ./fubar3, μπορείτε να χρησιμοποιήσετε την κανονική έκφραση .*bar.' ή.b.3', αλλά όχι `f.*r3'. Οι κανονικές εκφράσεις που κατανοούνται από το find είναι από προεπιλογή οι κανονικές εκφράσεις Emacs, αλλά αυτό μπορεί να αλλάξει με την επιλογή -regextype.

-samefile name

Το αρχείο αναφέρεται στον ίδιο inode με το name. Όταν η επιλογή -L είναι ενεργή, αυτό μπορεί να περιλαμβάνει συμβολικούς συνδέσμους.

-size n[cwbkMG]

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

`b' για μπλοκ 512 byte (αυτή είναι η προεπιλογή εάν δεν χρησιμοποιείται καμία κατάληξη)

`c' για byte

`w' για λέξεις δύο byte

`k' για kibibyte (KiB, μονάδες 1024 byte)

`M' για mebibyte (MiB, μονάδες 1024 * 1024 = 1048576 byte)

`G' για gibibyte (GiB, μονάδες 1024 * 1024 * 1024 = 1073741824 byte)

Το μέγεθος είναι απλώς το μέλος st_size της δομής stat που δημιουργείται από την κλήση συστήματος lstat (ή stat), στρογγυλοποιώντας προς τα πάνω όπως φαίνεται παραπάνω. Με άλλα λόγια, είναι συνεπές με το αποτέλεσμα που λαμβάνετε για το ls -l. Να θυμάστε ότι οι καθοριστές μορφής %k' και%b' της επιλογής -printf χειρίζονται διαφορετικά τα αραιά αρχεία. Η κατάληξη `b' υποδηλώνει πάντα μπλοκ 512 byte και όχι μπλοκ 1024 byte, κάτι που είναι διαφορετικό από τη συμπεριφορά του -ls.

Οι πρόθετοι + και - υποδηλώνουν μεγαλύτερο από και μικρότερο από, όπως συνήθως. Δηλαδή, ένα ακριβές μέγεθος n δεν ταιριάζει. Να θυμάστε ότι το μέγεθος στρογγυλοποιείται προς την επόμενη μονάδα. Επομένως, το -size -1M δεν είναι ισοδύναμο με το -size -1048576c. Το πρώτο ταιριάζει μόνο με άδεια αρχεία, το δεύτερο ταιριάζει με αρχεία από 0 έως 1.048.575 byte.

-true

Πάντα αληθές.

-type c

Το αρχείο είναι τύπου c:

b μπλοκ (buffered) ειδικό

c χαρακτήρας (unbuffered) ειδικό

d κατάλογος

p ονομασμένος σωλήνας (FIFO)

f κανονικό αρχείο

l συμβολικός σύνδεσμος. Αυτό δεν είναι ποτέ αληθές εάν η επιλογή -L ή η επιλογή -follow είναι ενεργή, εκτός εάν ο συμβολικός σύνδεσμος είναι κατεστραμμένος. Εάν θέλετε να αναζητήσετε συμβολικούς συνδέσμους όταν η -L είναι ενεργή, χρησιμοποιήστε την -xtype.

s      υποδοχή

D      πόρτα (Solaris)

Για να αναζητήσετε περισσότερους από έναν τύπους ταυτόχρονα, μπορείτε να δώσετε τη συνδυασμένη λίστα των χαρακτήρων τύπου χωρισμένη με κόμμα `,' (επέκταση GNU).

-uid n Η αριθμητική ταυτότητα χρήστη του αρχείου είναι μικρότερη, μεγαλύτερη ή ακριβώς n.

-used n

Το αρχείο προσπελάστηκε τελευταία φορά λιγότερες, περισσότερες ή ακριβώς n ημέρες μετά την τελευταία φορά που άλλαξε η κατάστασή του.

-user uname

Το αρχείο ανήκει στον χρήστη uname (επιτρέπεται αριθμητική ταυτότητα χρήστη).

-wholename pattern

Δείτε -path. Αυτή η εναλλακτική λύση είναι λιγότερο φορητή από την -path.

-writable

Αντιστοιχεί σε αρχεία στα οποία ο τρέχων χρήστης έχει δικαιώματα εγγραφής. Αυτό λαμβάνει υπόψη τις λίστες ελέγχου πρόσβασης και άλλα αντικείμενα δικαιωμάτων, τα οποία η δοκιμή -perm αγνοεί. Αυτή η δοκιμή χρησιμοποιεί την κλήση συστήματος access(2) και, επομένως, μπορεί να εξαπατηθεί από διακομιστές NFS που χρησιμοποιούν αντιστοίχιση UID (ή καταστολή root), επειδή πολλά συστήματα υλοποιούν την access(2) στον πυρήνα του πελάτη και, επομένως, δεν μπορούν να χρησιμοποιήσουν τις πληροφορίες αντιστοίχισης UID που διατηρούνται στον διακομιστή.

-xtype c

Το ίδιο με το -type, εκτός εάν το αρχείο είναι ένας συμβολικός σύνδεσμος. Για τους συμβολικούς συνδέσμους: εάν η επιλογή -H ή -P έχει καθοριστεί, είναι αληθές εάν το αρχείο είναι ένας σύνδεσμος σε ένα αρχείο τύπου c· εάν έχει δοθεί η επιλογή -L, είναι αληθές εάν το c είναι l. Με άλλα λόγια, για τους συμβολικούς συνδέσμους, το -xtype ελέγχει τον τύπο του αρχείου στο οποίο δείχνει ο σύνδεσμος, τον οποίο το -type δεν ελέγχει. Εάν ένας συμβολικός σύνδεσμος είναι κατεστραμμένος (επειδή το αρχείο στο οποίο δείχνει δεν υπάρχει ή ο σύνδεσμος δείχνει στον εαυτό του), το -xtype θα συμπεριφερθεί όπως το -type.

-context pattern
(Μόνο για SELinux) Το περιβάλλον ασφαλείας του αρχείου ταιριάζει με το μοτίβο glob.

ΕΝΕΡΓΕΙΕΣ

-delete

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

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

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

Συχνά, ο χρήστης ενδέχεται να θέλει να δοκιμάσει μια γραμμή εντολών find με το -print πριν προσθέσει το -delete για την πραγματική εκτέλεση διαγραφής. Για να αποφευχθούν απροσδόκητα αποτελέσματα, συνήθως είναι καλύτερο να θυμάστε να χρησιμοποιείτε το -depth ρητά κατά τη διάρκεια αυτών των πρώιμων δοκιμαστικών εκτελέσεων.

Η ενέργεια -delete θα αποτύχει να διαγράψει έναν κατάλογο, εκτός εάν είναι άδειος.

Μαζί με την επιλογή -ignore_readdir_race, το find θα αγνοήσει τα σφάλματα της ενέργειας -delete στην περίπτωση που το αρχείο έχει εξαφανιστεί από τότε που διαβάστηκε ο γονικός κατάλογος: δεν θα εμφανίσει διαγνωστικό σφάλμα, δεν θα αλλάξει την κατάσταση εξόδου σε μη μηδενική και ο κώδικας επιστροφής της ενέργειας -delete θα είναι αληθής.

-exec command ;

Εκτέλεση της εντολής· είναι αληθές εάν επιστραφεί κατάσταση 0. Όλα τα επόμενα ορίσματα στο find θεωρούνται ορίσματα της εντολής, έως ότου συναντηθεί ένα όρισμα που αποτελείται από το ;' . Η συμβολοσειρά{}αντικαθίσταται από το τρέχον όνομα αρχείου που υποβάλλεται σε επεξεργασία, όπου και αν εμφανίζεται στα ορίσματα της εντολής, όχι μόνο σε ορίσματα όπου βρίσκεται μόνο του, όπως σε ορισμένες εκδόσεις του find. Και οι δύο αυτές κατασκευές ενδέχεται να χρειαστεί να διαφύγουν (με ένα`) ή να περικλειστούν σε εισαγωγικά για να προστατεύονται από την επέκταση του κελύφους. Δείτε την ενότητα ΠΑΡΑΔΕΙΓΜΑΤΑ για παραδείγματα χρήσης της επιλογής -exec. Η καθορισμένη εντολή εκτελείται μία φορά για κάθε αρχείο που ταιριάζει. Η εντολή εκτελείται στον αρχικό κατάλογο. Υπάρχουν αναπόφευκτα προβλήματα ασφαλείας σχετικά με τη χρήση της ενέργειας -exec· θα πρέπει να χρησιμοποιήσετε την επιλογή -execdir αντ 'αυτού.


-exec command {} +

Αυτή η παραλλαγή της ενέργειας -exec εκτελεί την καθορισμένη εντολή στα επιλεγμένα αρχεία, αλλά η γραμμή εντολών δημιουργείται προσθέτοντας το όνομα κάθε επιλεγμένου αρχείου στο τέλος· ο συνολικός αριθμός των εκκλήσεων της εντολής θα είναι πολύ μικρότερος από τον αριθμό των αρχείων που ταιριάζουν. Η γραμμή εντολών δημιουργείται με παρόμοιο τρόπο με τον οποίο το xargs δημιουργεί τις γραμμές εντολών του. Επιτρέπεται μόνο μία παρουσία του {}' μέσα στην εντολή και πρέπει να εμφανίζεται στο τέλος, ακριβώς πριν από το+. Πρέπει να διαφύγετε (με ένα`) ή να το περικλείσετε σε εισαγωγικά για να το προστατεύσετε από την ερμηνεία του από το κέλυφος. Η εντολή εκτελείται στον αρχικό κατάλογο. Εάν οποιαδήποτε εκκίνηση με τη μορφή `+' επιστρέψει μη μηδενική τιμή κατάστασης εξόδου, τότε το find επιστρέφει μη μηδενική τιμή κατάστασης εξόδου. Εάν το find αντιμετωπίσει ένα σφάλμα, αυτό μπορεί μερικές φορές να προκαλέσει άμεση έξοδο, επομένως ορισμένες εκκρεμείς εντολές ενδέχεται να μην εκτελεστούν καθόλου. Για αυτόν τον λόγο, το -exec my-command ... {} + -quit ενδέχεται να μην έχει ως αποτέλεσμα την πραγματική εκτέλεση της εντολής my-command. Αυτή η παραλλαγή του -exec επιστρέφει πάντα true.

-execdir command ;

-execdir command {} +

Παρόμοιο με το -exec, αλλά η καθορισμένη εντολή εκτελείται από τον υποκατάλογο που περιέχει το αρχείο που ταιριάζει, ο οποίος δεν είναι συνήθως ο κατάλογος στον οποίο ξεκινήσατε το find. Όπως και με το -exec, το {} θα πρέπει να περικλείεται σε εισαγωγικά εάν το find εκτελείται από ένα κέλυφος. Αυτή είναι μια πολύ πιο ασφαλής μέθοδος για την εκκίνηση εντολών, καθώς αποφεύγει τους κινδύνους κατά τη διάρκεια της επίλυσης των διαδρομών προς τα αρχεία που ταιριάζουν. Όπως και με την ενέργεια -exec, η μορφή +' του -execdir θα δημιουργήσει μια γραμμή εντολών για την επεξεργασία περισσότερων από ένα αρχείου που ταιριάζει, αλλά κάθε δεδομένη εκκίνηση της εντολής θα καταγράφει μόνο αρχεία που υπάρχουν στον ίδιο υποκατάλογο. Εάν χρησιμοποιήσετε αυτήν την επιλογή, πρέπει να βεβαιωθείτε ότι η μεταβλητή περιβάλλοντος PATH δεν αναφέρεται στο.'; διαφορετικά, ένας εισβολέας μπορεί να εκτελέσει οποιεσδήποτε εντολές θέλει αφήνοντας ένα αρχείο με το κατάλληλο όνομα σε έναν κατάλογο στον οποίο θα εκτελέσετε το -execdir. Το ίδιο ισχύει και για την ύπαρξη καταχωρήσεων στο PATH οι οποίες είναι κενές ή οι οποίες δεν είναι απόλυτα ονόματα καταλόγων. Εάν οποιαδήποτε εκκίνηση με τη μορφή +' επιστρέψει μη μηδενική τιμή κατάστασης εξόδου, τότε το find επιστρέφει μη μηδενική τιμή κατάστασης εξόδου. Εάν το find αντιμετωπίσει ένα σφάλμα, αυτό μπορεί μερικές φορές να προκαλέσει άμεση έξοδο, επομένως ορισμένες εκκρεμείς εντολές ενδέχεται να μην εκτελεστούν καθόλου. Το αποτέλεσμα της ενέργειας εξαρτάται από το αν χρησιμοποιείται η μορφή+' ή η μορφή ;, το -execdir command {} + επιστρέφει πάντα true, ενώ το -execdir command {} ; επιστρέφει true μόνο εάν η εντολή επιστρέψει 0.


-fls file

Αληθές· όπως το -ls, αλλά γράφει σε αρχείο όπως το -fprint. Το αρχείο εξόδου δημιουργείται πάντα, ακόμη και αν το κατηγόρημα δεν ταιριάζει ποτέ. Δείτε την ενότητα "ΑΣΥΝΗΘΙΣΤΑ ΟΝΟΜΑΤΑ ΑΡΧΕΙΩΝ" για πληροφορίες σχετικά με τον τρόπο με τον οποίο αντιμετωπίζονται οι ασυνήθιστοι χαρακτήρες στα ονόματα αρχείων.

-fprint file

Αληθές· εκτυπώνει το πλήρες όνομα αρχείου στο αρχείο file. Εάν το αρχείο δεν υπάρχει όταν εκτελείται το find, δημιουργείται· εάν υπάρχει, περικόπτεται. Τα ονόματα αρχείων /dev/stdout και /dev/stderr αντιμετωπίζονται ειδικά· αναφέρονται στην τυπική έξοδο και στην τυπική έξοδο σφαλμάτων, αντίστοιχα. Το αρχείο εξόδου δημιουργείται πάντα, ακόμη και αν το κατηγόρημα δεν ταιριάζει ποτέ. Δείτε την ενότητα "ΑΣΥΝΗΘΙΣΤΑ ΟΝΟΜΑΤΑ ΑΡΧΕΙΩΝ" για πληροφορίες σχετικά με τον τρόπο με τον οποίο αντιμετωπίζονται οι ασυνήθιστοι χαρακτήρες στα ονόματα αρχείων.

-fprint0 file

Αληθές· όπως το -print0, αλλά γράφει σε αρχείο όπως το -fprint. Το αρχείο εξόδου δημιουργείται πάντα, ακόμη και αν το κατηγόρημα δεν ταιριάζει ποτέ. Δείτε την ενότητα "ΑΣΥΝΗΘΙΣΤΑ ΟΝΟΜΑΤΑ ΑΡΧΕΙΩΝ" για πληροφορίες σχετικά με τον τρόπο με τον οποίο αντιμετωπίζονται οι ασυνήθιστοι χαρακτήρες στα ονόματα αρχείων.

-fprintf file format

Αληθές· όπως το -printf, αλλά γράφει σε αρχείο όπως το -fprint. Το αρχείο εξόδου δημιουργείται πάντα, ακόμη και αν το κατηγόρημα δεν ταιριάζει ποτέ. Δείτε την ενότητα "ΑΣΥΝΗΘΙΣΤΑ ΟΝΟΜΑΤΑ ΑΡΧΕΙΩΝ" για πληροφορίες σχετικά με τον τρόπο με τον οποίο αντιμετωπίζονται οι ασυνήθιστοι χαρακτήρες στα ονόματα αρχείων.

-ls    Αληθές· εμφανίζει το τρέχον αρχείο στην τυπική έξοδο σε μορφή ls -dils. Οι μετρήσεις μπλοκ είναι μπλοκ των 1KB, εκτός εάν η μεταβλητή περιβάλλοντος POSIXLY_CORRECT έχει οριστεί, οπότε χρησιμοποιούνται μπλοκ των 512 byte. Δείτε την ενότητα "ΑΣΥΝΗΘΙΣΤΑ ΟΝΟΜΑΤΑ ΑΡΧΕΙΩΝ" για πληροφορίες σχετικά με τον τρόπο με τον οποίο αντιμετωπίζονται οι ασυνήθιστοι χαρακτήρες στα ονόματα αρχείων.

-ok command ;

Όπως το -exec, αλλά ζητάει πρώτα από τον χρήστη. Εάν ο χρήστης συμφωνήσει, εκτελεί την εντολή. Διαφορετικά, απλώς επιστρέφει ψευδές. Εάν εκτελεστεί η εντολή, η τυπική της είσοδος ανακατευθύνεται από το /dev/null. Αυτή η ενέργεια δεν μπορεί να καθοριστεί μαζί με την επιλογή -files0-from.

Η απάντηση στην προτροπή αντιστοιχίζεται σε ένα ζεύγος κανονικών εκφράσεων για να προσδιοριστεί εάν είναι μια επιβεβαιωτική ή μια αρνητική απάντηση. Αυτή η κανονική έκφραση λαμβάνεται από το σύστημα εάν η μεταβλητή περιβάλλοντος POSIXLY_CORRECT έχει οριστεί, ή διαφορετικά από τις μεταφράσεις μηνυμάτων του find. Εάν το σύστημα δεν έχει κατάλληλο ορισμό, θα χρησιμοποιηθεί ο δικός του ορισμός του find. Σε κάθε περίπτωση, η ερμηνεία της ίδιας της κανονικής έκφρασης θα επηρεαστεί από τις μεταβλητές περιβάλλοντος LC_CTYPE (κλάσεις χαρακτήρων) και LC_COLLATE (εύρη χαρακτήρων και κλάσεις ισοδυναμίας).

-okdir command ;

Όπως το -execdir, αλλά ζητάει πρώτα από τον χρήστη με τον ίδιο τρόπο όπως για το -ok. Εάν ο χρήστης δεν συμφωνήσει, απλώς επιστρέφει ψευδές. Εάν εκτελεστεί η εντολή, η τυπική της είσοδος ανακατευθύνεται από το /dev/null. Αυτή η ενέργεια δεν μπορεί να καθοριστεί μαζί με την επιλογή -files0-from.

-print Αληθές· εκτυπώνει το πλήρες όνομα αρχείου στην τυπική έξοδο, ακολουθούμενο από μια νέα γραμμή. Εάν διοχετεύετε την έξοδο του find σε άλλο πρόγραμμα και υπάρχει η παραμικρή πιθανότητα τα αρχεία που αναζητάτε να περιέχουν μια νέα γραμμή, τότε θα πρέπει να εξετάσετε σοβαρά τη χρήση της επιλογής -print0 αντί για το -print. Δείτε την ενότητα "ΑΣΥΝΗΘΙΣΤΑ ΟΝΟΜΑΤΑ ΑΡΧΕΙΩΝ" για πληροφορίες σχετικά με τον τρόπο με τον οποίο αντιμετωπίζονται οι ασυνήθιστοι χαρακτήρες στα ονόματα αρχείων.

`-print0`
`True`; εκτυπώνει το πλήρες όνομα αρχείου στην τυπική έξοδο, ακολουθούμενο από έναν χαρακτήρα μηδενικού (αντί για τον χαρακτήρα νέας γραμμής που χρησιμοποιεί το `-print`). Αυτό επιτρέπει σε ονόματα αρχείων που περιέχουν νέες γραμμές ή άλλους τύπους λευκού χώρου να ερμηνεύονται σωστά από προγράμματα που επεξεργάζονται την έξοδο του `find`. Αυτή η επιλογή αντιστοιχεί στην επιλογή `-0` του `xargs`.

`-printf format`
`True`; εκτυπώνει το `format` στην τυπική έξοδο, ερμηνεύοντας τις μεταβλητές `\` και τις `%' οδηγίες. Τα πλάτη πεδίου και οι ακρίβειες μπορούν να καθοριστούν όπως στη συνάρτηση C [printf]({filename}../../printf)(3). Σημειώστε ότι πολλά από τα πεδία εκτυπώνονται ως `%s` αντί για `%d`, και αυτό μπορεί να σημαίνει ότι οι σημαίες δεν λειτουργούν όπως θα περιμένατε. Αυτό σημαίνει επίσης ότι η σημαία `-` λειτουργεί (αναγκάζει τα πεδία να είναι ευθυγραμμισμένα στην αριστερή πλευρά). Σε αντίθεση με το `-print`, το `-printf` δεν προσθέτει μια νέα γραμμή στο τέλος της συμβολοσειράς. Οι μεταβλητές και οι οδηγίες είναι:

`\a` Σήμα συναγερμού.

`\b` Επιστροφή.

`\c` Σταματήστε την εκτύπωση από αυτό το φορμάτ αμέσως και αδειάστε την έξοδο.

`\f` Αλλαγή σελίδας.

`\n` Νέα γραμμή.

`\r` Επιστροφή καροτσιού.

`\t` Οριζόντια καρτέλα.

`\v` Κάθετη καρτέλα.

`\0` ASCII NUL.

`\\` Ένα κυριολεκτικό ανάστροφο κάθετο (`\`).

`\NNN` Ο χαρακτήρας του οποίου ο κωδικός ASCII είναι NNN (οκταδικός).

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

`%%` Ένα κυριολεκτικό σύμβολο ποσοστού.

`%a` Η τελευταία ώρα πρόσβασης του αρχείου στη μορφή που επιστρέφεται από τη συνάρτηση C `ctime(3)`.

`%Ak` Η τελευταία ώρα πρόσβασης του αρχείου στη μορφή που καθορίζεται από το `k`, το οποίο είναι είτε `@` είτε μια οδηγία για τη συνάρτηση C `strftime(3)`. Το παρακάτω δείχνει μια ατελή λίστα πιθανών τιμών για το `k`. Ανατρέξτε στην τεκμηρίωση της `strftime(3)` για την πλήρη λίστα. Ορισμένοι από τους χαρακτήρες καθορισμού μορφής ενδέχεται να μην είναι διαθέσιμοι σε όλα τα συστήματα, λόγω διαφορών στην υλοποίηση της συνάρτησης βιβλιοθήκης `strftime(3)`.

`@` δευτερόλεπτα από την 1η Ιανουαρίου 1970, 00:00 GMT, με δεκαδικό μέρος.

Χρονικά πεδία:

`H` ώρα (00..23)

`I` ώρα (01..12)

`k` ώρα (0..23)

`l` ώρα (1..12)

`M` λεπτό (00..59)

`p` τοπικό AM ή PM

`r` ώρα, 12 ωρών (hh:mm:ss [AP]M)

`S` Δευτερόλεπτο (00.00 .. 61.00). Υπάρχει ένα δεκαδικό μέρος.

`T` ώρα, 24 ωρών (hh:mm:ss.xxxxxxxxxx)

`+` Ημερομηνία και ώρα, χωρισμένα με `+`, για παράδειγμα `2004-04-28+22:22:05.0`. Αυτή είναι μια επέκταση GNU. Η ώρα δίνεται στην τρέχουσα ζώνη ώρας (η οποία ενδέχεται να επηρεαστεί από τη ρύθμιση της μεταβλητής περιβάλλοντος TZ). Το πεδίο δευτερολέπτων περιλαμβάνει ένα δεκαδικό μέρος.

`X` Τοπική αναπαράσταση ώρας (H:M:S). Το πεδίο δευτερολέπτων περιλαμβάνει ένα δεκαδικό μέρος.

`Z` ζώνη ώρας (π.χ., EDT), ή τίποτα εάν δεν μπορεί να προσδιοριστεί ζώνη ώρας.

Πεδία ημερομηνίας:

a      Η συντομογραφία της ημέρας της εβδομάδας (Κυρ..Σάβ)

A      Η πλήρης ονομασία της ημέρας της εβδομάδας, μεταβλητού μήκους (Κυριακή..Σάββατο)

b      Η συντομογραφία του μήνα (Ιαν..Δεκ)

B      Η πλήρης ονομασία του μήνα, μεταβλητού μήκους (Ιανουάριος..Δεκέμβριος)

c      Η ημερομηνία και η ώρα, μορφοποιημένη όπως στην συνάρτηση ctime(3). Για λόγους συμβατότητας με την συνάρτηση ctime(3), δεν υπάρχει δεκαδικό μέρος στο πεδίο των δευτερολέπτων.

d      Η ημέρα του μήνα (01..31)

D      Η ημερομηνία (μμ/ηη/έέ)

F      Η ημερομηνία (έέέέ-μμ-ηη)

h      ίδιο με το b

j      Η ημέρα του έτους (001..366)

m      Ο μήνας (01..12)

U      Η εβδομάδα του έτους, με την Κυριακή ως την πρώτη ημέρα της εβδομάδας (00..53)

w      Η ημέρα της εβδομάδας (0..6)

W      Η εβδομάδα του έτους, με τη Δευτέρα ως την πρώτη ημέρα της εβδομάδας (00..53)

x      Η μορφοποιημένη ημερομηνία, όπως ορίζεται από την τοπική ρύθμιση (μμ/ηη/έέ)

y      Τα δύο τελευταία ψηφία του έτους (00..99)

Y      Το έτος (1970...)

%b     Ο χώρος στο δίσκο που χρησιμοποιεί αυτό το αρχείο, σε μπλοκ των 512 byte. Δεδομένου ότι ο χώρος στο δίσκο κατανέμεται σε πολλαπλάσια του μεγέθους του μπλοκ του συστήματος αρχείων, αυτό συνήθως είναι μεγαλύτερο από το %s/512, αλλά μπορεί επίσης να είναι μικρότερο εάν το αρχείο είναι αραιό αρχείο.

%Bk    Η ώρα δημιουργίας του αρχείου, δηλαδή η ώρα δημιουργίας του, με τη μορφή που καθορίζεται από το k, το οποίο είναι το ίδιο με το %A. Αυτή η οδηγία παράγει μια κενή συμβολοσειρά εάν το υποκείμενο λειτουργικό σύστημα ή το σύστημα αρχείων δεν υποστηρίζει ώρες δημιουργίας.

%c     Η τελευταία ώρα αλλαγής κατάστασης του αρχείου, με τη μορφή που επιστρέφεται από τη συνάρτηση C ctime(3).

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

%d     Το βάθος του αρχείου στην ιεραρχία καταλόγων. Το 0 σημαίνει ότι το αρχείο είναι το σημείο εκκίνησης.

%D     Ο αριθμός συσκευής στην οποία βρίσκεται το αρχείο (το πεδίο st_dev της δομής stat), σε δεκαδική μορφή.

%f     Εμφάνιση του βασικού ονόματος. Το όνομα του αρχείου χωρίς τυχόν αρχικές καταλόγους (μόνο το τελευταίο στοιχείο). Για το /, το αποτέλεσμα είναι `/'. Δείτε την ενότητα ΠΑΡΑΔΕΙΓΜΑΤΑ για ένα παράδειγμα.

%F     Ο τύπος του συστήματος αρχείων στο οποίο βρίσκεται το αρχείο. Αυτή η τιμή μπορεί να χρησιμοποιηθεί για το -fstype.

%g     Το όνομα της ομάδας του αρχείου ή ο αριθμητικός αναγνωριστικός της ομάδας εάν η ομάδα δεν έχει όνομα.

%G     Ο αριθμητικός αναγνωριστικός της ομάδας του αρχείου.

%h     Κατάλογος. Οι αρχικοί κατάλογοι του ονόματος του αρχείου (όλα εκτός από το τελευταίο στοιχείο). Εάν το όνομα του αρχείου δεν περιέχει διαγώνιες γραμμές (δεδομένου ότι βρίσκεται στον τρέχοντα κατάλογο), η οδηγία %h επεκτείνεται στο `.`. Για αρχεία που είναι οι ίδιοι κατάλογοι και περιέχουν μια διαγώνια γραμμή (συμπεριλαμβανομένου του /), η %h επεκτείνεται στην κενή συμβολοσειρά. Δείτε την ενότητα ΠΑΡΑΔΕΙΓΜΑΤΑ για ένα παράδειγμα.

%H     Το σημείο εκκίνησης κάτω από το οποίο βρέθηκε το αρχείο.

%i     Ο αριθμός inode του αρχείου (σε δεκαδική μορφή).

%k     Ο χώρος στο δίσκο που χρησιμοποιεί αυτό το αρχείο, σε μπλοκ των 1 KB. Δεδομένου ότι ο χώρος στο δίσκο κατανέμεται σε πολλαπλάσια του μεγέθους του μπλοκ του συστήματος αρχείων, αυτό συνήθως είναι μεγαλύτερο από το %s/1024, αλλά μπορεί επίσης να είναι μικρότερο εάν το αρχείο είναι αραιό αρχείο.

%l     Το αντικείμενο της συμβολικής σύνδεσης (κενή συμβολοσειρά εάν το αρχείο δεν είναι μια συμβολική σύνδεση).

%m     Τα δικαιώματα του αρχείου (σε δεκαεξαδική μορφή). Αυτή η επιλογή χρησιμοποιεί τους «παραδοσιακούς» αριθμούς που χρησιμοποιούν οι περισσότερες υλοποιήσεις Unix, αλλά εάν η συγκεκριμένη υλοποίηση σας χρησιμοποιεί μια ασυνήθιστη σειρά για τα δεκαεξαδικά δικαιώματα, θα δείτε μια διαφορά μεταξύ της πραγματικής τιμής της λειτουργίας του αρχείου και της εξόδου της %m. Συνήθως θα θέλετε να έχετε ένα αρχικό μηδέν σε αυτόν τον αριθμό και για να το κάνετε αυτό, θα πρέπει να χρησιμοποιήσετε τη σημαία # (όπως, για παράδειγμα, το `%#m`).

%M  Το όνομα των αδειών του αρχείου (σε συμβολική μορφή, όπως για την εντολή ls). Αυτή η οδηγία υποστηρίζεται στις εκδόσεις findutils 4.2.5 και μεταγενέστερες.

%n  Ο αριθμός των σκληρών συνδέσμων προς το αρχείο.

%p  Το όνομα του αρχείου.

%P  Το όνομα του αρχείου με το όνομα του σημείου εκκίνησης κάτω από το οποίο βρέθηκε αφαιρεμένο.

%s  Το μέγεθος του αρχείου σε byte.

%S  Η αραιότητα του αρχείου. Αυτό υπολογίζεται ως (BLOCKSIZE*st_blocks / st_size). Η ακριβής τιμή που θα λάβετε για ένα συνηθισμένο αρχείο ενός συγκεκριμένου μεγέθους εξαρτάται από το σύστημα. Ωστόσο, κανονικά τα αραιά αρχεία θα έχουν τιμές μικρότερες από 1.0 και τα αρχεία που χρησιμοποιούν έμμεσους μπλοκ μπορεί να έχουν μια τιμή που είναι μεγαλύτερη από 1.0. Σε γενικές γραμμές, ο αριθμός των μπλοκ που χρησιμοποιούνται από ένα αρχείο εξαρτάται από το σύστημα αρχείων. Η τιμή που χρησιμοποιείται για το BLOCKSIZE εξαρτάται από το σύστημα, αλλά συνήθως είναι 512 byte. Εάν το μέγεθος του αρχείου είναι μηδέν, η εκτυπωμένη τιμή είναι απροσδιόριστη. Σε συστήματα που δεν υποστηρίζουν το st_blocks, η αραιότητα ενός αρχείου θεωρείται ότι είναι 1.0.

%t  Η τελευταία ώρα τροποποίησης του αρχείου στη μορφή που επιστρέφεται από τη συνάρτηση C ctime(3).

%Tk Η τελευταία ώρα τροποποίησης του αρχείου στη μορφή που καθορίζεται από το k, το οποίο είναι το ίδιο με το %A.

%u  Το όνομα χρήστη του αρχείου ή το αριθμητικό αναγνωριστικό χρήστη εάν ο χρήστης δεν έχει όνομα.

%U  Το αριθμητικό αναγνωριστικό χρήστη του αρχείου.

%y  Ο τύπος του αρχείου (όπως στην εντολή ls -l), U=άγνωστος τύπος (δεν θα πρέπει να συμβαίνει).

%Y  Ο τύπος του αρχείου (όπως το %y), συν την παρακολούθηση των συμβολικών συνδέσμων: `L'=βρόχος, `N'=μη υπάρχον, `?' για οποιοδήποτε άλλο σφάλμα κατά τον προσδιορισμό του τύπου του στόχου ενός συμβολικού συνδέσμου.

%Z  (Μόνο για SELinux) το περιβάλλον ασφαλείας του αρχείου.

%{ %[ %(
Επιφυλάσσεται για μελλοντική χρήση.

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

Οι οδηγίες %m και %d υποστηρίζουν τις σημαίες #, 0 και +, αλλά οι άλλες οδηγίες δεν τις υποστηρίζουν, ακόμη και αν εκτυπώνουν αριθμούς. Οι αριθμητικές οδηγίες που δεν υποστηρίζουν αυτές τις σημαίες περιλαμβάνουν G, U, b, D, k και n. Η σημαία μορφής - υποστηρίζεται και αλλάζει την στοίχιση ενός πεδίου από δεξιά (η οποία είναι η προεπιλογή) σε αριστερή.

Δείτε την ενότητα ΑΣΥΝΗΘΙΣΤΑ ΟΝΟΜΑΤΑ ΑΡΧΕΙΩΝ για πληροφορίες σχετικά με τον τρόπο με τον οποίο αντιμετωπίζονται οι ασυνήθιστοι χαρακτήρες στα ονόματα αρχείων.

-prune Αληθές. εάν το αρχείο είναι ένας κατάλογος, μην εισέλθετε σε αυτόν. Εάν δοθεί η επιλογή -depth, τότε η επιλογή -prune δεν έχει καμία επίδραση. Επειδή η επιλογή -delete υπονοεί την επιλογή -depth, δεν μπορείτε να χρησιμοποιήσετε με νόημα τις επιλογές -prune και -delete μαζί. Για παράδειγμα, για να παραλείψετε τον κατάλογο src/emacs και όλα τα αρχεία και τους υποκαταλόγους κάτω από αυτόν και να εκτυπώσετε τα ονόματα των άλλων αρχείων που βρέθηκαν, κάντε κάτι σαν αυτό:
find . -path ./src/emacs -prune -o -print

-quit Τερματίζει αμέσως (με τιμή επιστροφής μηδέν εάν δεν έχουν συμβεί σφάλματα). Αυτό είναι διαφορετικό από το -prune, επειδή το -prune εφαρμόζεται μόνο στο περιεχόμενο των καταλόγων που έχουν αποκλειστεί, ενώ το -quit απλά κάνει την εντολή find να σταματήσει αμέσως. Δεν θα μείνουν ενεργές θυγατρικές διεργασίες. Οποιεσδήποτε γραμμές εντολών που έχουν δημιουργηθεί με τις επιλογές -exec ... + ή -execdir ... + θα εκτελεστούν πριν τερματιστεί το πρόγραμμα. Αφού εκτελεστεί το -quit, κανένα από τα αρχεία που καθορίζονται στη γραμμή εντολών δεν θα υποβληθεί σε επεξεργασία. Για παράδειγμα, η εντολή `find /tmp/foo /tmp/bar -print -quit` θα εκτυπώσει μόνο το `/tmp/foo`.

Μια κοινή χρήση του -quit είναι να σταματήσει την αναζήτηση του συστήματος αρχείων μόλις βρούμε αυτό που θέλουμε. Για παράδειγμα, εάν θέλουμε να βρούμε μόνο ένα αρχείο, μπορούμε να το κάνουμε ως εξής: find / -name needle -print -quit

ΤΕΛΕΣΤΕΣ

Παρατίθενται με φθίνουσα σειρά προτεραιότητας:

( expr )

Επιβάλλει προτεραιότητα. Δεδομένου ότι οι παρενθέσεις είναι ειδικές για το κέλυφος, συνήθως θα πρέπει να τις προσθέτετε σε εισαγωγικά. Πολλά από τα παραδείγματα σε αυτή τη σελίδα εγχειριδίου χρησιμοποιούν ανάστροφες κάθετους για αυτόν τον σκοπό: \(...\)' αντί για(...)'.

! expr Αληθές εάν το expr είναι ψευδές. Αυτός ο χαρακτήρας θα χρειαστεί επίσης συνήθως προστασία από την ερμηνεία του από το κέλυφος.

-not expr

Ίδιο με το ! expr, αλλά δεν συμμορφώνεται με το POSIX.

expr1 expr2

Δύο εκφράσεις η μία μετά την άλλη θεωρούνται ότι συνδέονται με μια υπονοούμενη τιμή -a. Το expr2 δεν αξιολογείται εάν το expr1 είναι ψευδές.

expr1 -a expr2

Ίδιο με το expr1 expr2.

expr1 -and expr2

Ίδιο με το expr1 expr2, αλλά δεν συμμορφώνεται με το POSIX.

expr1 -o expr2

Ή. Το expr2 δεν αξιολογείται εάν το expr1 είναι αληθές.

expr1 -or expr2

Ίδιο με το expr1 -o expr2, αλλά δεν συμμορφώνεται με το POSIX.

expr1 , expr2

Λίστα. Τόσο το expr1 όσο και το expr2 αξιολογούνται πάντα. Η τιμή του expr1 απορρίπτεται. Η τιμή της λίστας είναι η τιμή του expr2. Ο τελεστής κόμμα μπορεί να είναι χρήσιμος για την αναζήτηση διαφόρων τύπων πραγμάτων, αλλά ταυτόχρονα διατρέχοντας την ιεραρχία του συστήματος αρχείων. Η ενέργεια -fprintf μπορεί να χρησιμοποιηθεί για να καταγράψει τα διάφορα στοιχεία που ταιριάζουν σε διάφορα αρχεία εξόδου.

Παρακαλούμε σημειώστε ότι το -a όταν καθορίζεται έμμεσα (για παράδειγμα, όταν δύο δοκιμές εμφανίζονται χωρίς ρητό τελεστή μεταξύ τους) ή ρητά έχει μεγαλύτερη προτεραιότητα από το -o. Αυτό σημαίνει ότι η εντολή find . -name afile -o -name bfile -print δεν θα εκτυπώσει ποτέ το afile.

ΑΣΥΝΗΘΙΣΤΑ ΟΝΟΜΑΤΑ ΑΡΧΕΙΩΝ

Πολλές από τις ενέργειες της εντολής find έχουν ως αποτέλεσμα την εκτύπωση δεδομένων που ελέγχονται από άλλους χρήστες. Αυτό περιλαμβάνει ονόματα αρχείων, μεγέθη, χρόνους τροποποίησης και ούτω καθεξής. Τα ονόματα αρχείων είναι ένα πιθανό πρόβλημα, καθώς μπορούν να περιέχουν οποιονδήποτε χαρακτήρα εκτός από το \0' και το/'. Οι ασυνήθιστοι χαρακτήρες στα ονόματα αρχείων μπορούν να προκαλέσουν απροσδόκητες και συχνά ανεπιθύμητες ενέργειες στο τερματικό σας (για παράδειγμα, αλλάζοντας τις ρυθμίσεις των πλήκτρων συνάρτησης σε ορισμένα τερματικά). Οι ασυνήθιστοι χαρακτήρες αντιμετωπίζονται διαφορετικά από διάφορες ενέργειες, όπως περιγράφεται παρακάτω.


`-print0`, `-fprint0`

Πάντα να εκτυπώνεται το ακριβές όνομα αρχείου, χωρίς αλλαγές, ακόμη και αν η έξοδος προορίζεται για τερματικό.

`-ls`, `-fls`

Οι ασυνήθιστοι χαρακτήρες διαφεύγονται πάντα. Οι χαρακτήρες κενού, ανάστροφος κάθετος και διπλό εισαγωγικό εκτυπώνονται χρησιμοποιώντας διαφυγή τύπου C (για παράδειγμα \f, \"). Οι υπόλοιποι ασυνήθιστοι χαρακτήρες εκτυπώνονται χρησιμοποιώντας οκταδική διαφυγή. Οι υπόλοιποι εκτυπώσιμοι χαρακτήρες (για τις επιλογές -ls και -fls, αυτοί είναι οι χαρακτήρες μεταξύ οκταδικού 041 και 0176) εκτυπώνονται όπως έχουν.

`-printf`, `-fprintf`

Εάν η έξοδος δεν προορίζεται για τερματικό, εκτυπώνεται όπως έχει. Διαφορετικά, το αποτέλεσμα εξαρτάται από την οδηγία που χρησιμοποιείται. Οι οδηγίες %D, %F, %g, %G, %H, %Y και %y επεκτείνονται σε τιμές που δεν ελέγχονται από τους κατόχους των αρχείων, επομένως εκτυπώνονται όπως έχουν. Οι οδηγίες %a, %b, %c, %d, %i, %k, %m, %M, %n, %s, %t, %u και %U έχουν τιμές που ελέγχονται από τους κατόχους των αρχείων, αλλά δεν μπορούν να χρησιμοποιηθούν για την αποστολή αυθαίρετων δεδομένων στο τερματικό, επομένως εκτυπώνονται όπως έχουν. Οι οδηγίες %f, %h, %l, %p και %P περικλείονται σε εισαγωγικά. Αυτή η περιγραφή γίνεται με τον ίδιο τρόπο όπως για το GNU ls. Αυτό δεν είναι ο ίδιος μηχανισμός περιγραφής με αυτόν που χρησιμοποιείται για τις επιλογές -ls και -fls. Εάν μπορείτε να αποφασίσετε ποια μορφή θα χρησιμοποιήσετε για την έξοδο της εντολής find, είναι συνήθως καλύτερο να χρησιμοποιήσετε το \0 ως τερματικό, παρά το χαρακτήρα νέας γραμμής, καθώς τα ονόματα αρχείων μπορούν να περιέχουν χαρακτήρες κενού και νέας γραμμής. Η ρύθμιση της μεταβλητής περιβάλλοντος LC\_CTYPE χρησιμοποιείται για να καθοριστεί ποιοι χαρακτήρες πρέπει να περικλειστούν σε εισαγωγικά.

`-print`, `-fprint`

Η περιγραφή γίνεται με τον ίδιο τρόπο όπως για τις επιλογές -printf και -fprintf. Εάν χρησιμοποιείτε την εντολή find σε ένα σενάριο ή σε μια κατάσταση όπου τα αρχεία που ταιριάζουν μπορεί να έχουν αυθαίρετα ονόματα, θα πρέπει να εξετάσετε το ενδεχόμενο να χρησιμοποιήσετε την επιλογή -print0 αντί για την επιλογή -print.

Οι ενέργειες -ok και -okdir εκτυπώνουν το τρέχον όνομα αρχείου όπως έχει. Αυτό μπορεί να αλλάξει σε μια μελλοντική έκδοση.

ΣΥΜΜΟΡΦΩΣΗ ΜΕ ΤΑ ΠΡΟΤΥΠΑ

Για τη μέγιστη δυνατή συμμόρφωση με το πρότυπο POSIX, θα πρέπει να ορίσετε τη μεταβλητή περιβάλλοντος POSIXLY\_CORRECT. Οι ακόλουθες επιλογές καθορίζονται στο πρότυπο POSIX (IEEE Std 1003.1-2008, Έκδοση 2016):

`-H` Αυτή η επιλογή υποστηρίζεται.

`-L` Αυτή η επιλογή υποστηρίζεται.

`-name` Υποστηρίζεται, αλλά η συμμόρφωση με το POSIX εξαρτάται από τη συμμόρφωση με το POSIX της συνάρτησης `fnmatch(3)` του συστήματος. Από την έκδοση `findutils-4.2.2`, οι μετα-χαρακτήρες του κελύφους (`*`, `?` ή `[]`, για παράδειγμα) ταιριάζουν με μια αρχική τελεία (`.`), επειδή η ερμηνεία 126 του IEEE PASC απαιτεί αυτό. Αυτή είναι μια αλλαγή από τις προηγούμενες εκδόσεις του `findutils`.

`-type` Υποστηρίζεται. Το POSIX καθορίζει `b`, `c`, `d`, `l`, `p`, `f` και `s`. Η εντολή `find` του GNU υποστηρίζει επίσης `D`, που αντιπροσωπεύει μια "Πύλη", όπου το λειτουργικό σύστημα παρέχει αυτές. Επιπλέον, η εντολή `find` του GNU επιτρέπει τον καθορισμό πολλών τύπων ταυτόχρονα σε μια λίστα που χωρίζεται με κόμματα.

`-ok` Υποστηρίζεται. Η ερμηνεία της απάντησης γίνεται σύμφωνα με τα πρότυπα `yes` και `no` που επιλέγονται με τη ρύθμιση της μεταβλητής περιβάλλοντος `LC_MESSAGES`. Όταν η μεταβλητή περιβάλλοντος `POSIXLY_CORRECT` έχει οριστεί, αυτά τα πρότυπα λαμβάνονται από τον ορισμό του συστήματος για μια θετική (yes) ή αρνητική (no) απάντηση. Δείτε την τεκμηρίωση του συστήματος για τη συνάρτηση `nl_langinfo(3)`, συγκεκριμένα τις `YESEXPR` και `NOEXPR`. Όταν η `POSIXLY_CORRECT` δεν έχει οριστεί, τα πρότυπα λαμβάνονται από το δικό του κατάλογο μηνυμάτων της εντολής `find`.

-newer Υποστηρίζεται. Εάν το καθορισμένο αρχείο είναι ένας συμβολικός σύνδεσμος, αποσυνδέεται πάντα.
Αυτή είναι μια αλλαγή από την προηγούμενη συμπεριφορά, η οποία χρησιμοποιούσε να λαμβάνει τη σχετική
χρονική σήμανση από τον συμβολικό σύνδεσμο· δείτε την ενότητα ΙΣΤΟΡΙΚΟ παρακάτω.

-perm Υποστηρίζεται. Εάν η μεταβλητή περιβάλλοντος POSIXLY_CORRECT δεν έχει οριστεί, ορισμένα ορίσματα
τρόπου (για παράδειγμα +a+x) που δεν είναι έγκυρα στο POSIX υποστηρίζονται για λόγους συμβατότητας.

Άλλες κύριες επιλογές Οι κύριες επιλογές -atime, -ctime, -depth, -exec, -group, -links, -mtime, -nogroup, -nouser, -ok, -path, -print, -prune, -size, -user και -xdev υποστηρίζονται όλες.

Το πρότυπο POSIX καθορίζει τις παρενθέσεις \`(', \`)', την άρνηση \`!' και τους λογικούς τελεστές AND/OR
-a και -o.

Όλες οι άλλες επιλογές, προϋποθέσεις, εκφράσεις και ούτω καθεξής είναι επεκτάσεις πέρα από το
πρότυπο POSIX. Πολλές από αυτές τις επεκτάσεις δεν είναι μοναδικές για το GNU find, ωστόσο.

Το πρότυπο POSIX απαιτεί από το find να ανιχνεύει βρόχους:

Το βοηθητικό πρόγραμμα find πρέπει να ανιχνεύει άπειρους βρόχους· δηλαδή, την είσοδο σε έναν προηγουμένως
επισκεφθέντα κατάλογο που είναι πρόγονος του τελευταίου αρχείου που συνάντησε. Όταν το find ανιχνεύσει
έναν άπειρο βρόχο, θα πρέπει να γράφει ένα διαγνωστικό μήνυμα στην τυπική έξοδο σφαλμάτων και θα
πρέπει να επαναφέρει τη θέση του στην ιεραρχία ή να τερματιστεί.

Το GNU find συμμορφώνεται με αυτές τις απαιτήσεις. Ο αριθμός συνδέσμων καταλόγων που περιέχουν
εγγραφές που είναι σκληροί σύνδεσμοι σε έναν πρόγονο θα είναι συχνά χαμηλότερος από ό,τι θα έπρεπε. Αυτό
μπορεί να σημαίνει ότι το GNU find θα παραλείπει ορισμένες φορές την επίσκεψη σε έναν υποκατάλογο που είναι
στην πραγματικότητα ένας σύνδεσμος σε έναν πρόγονο. Επειδή το find δεν εισέρχεται στην πραγματικότητα σε
έναν τέτοιο υποκατάλογο, επιτρέπεται να αποφεύγει την έκδοση ενός διαγνωστικού μηνύματος. Παρόλο που αυτή η
συμπεριφορά μπορεί να είναι κάπως συγκεχυτική, είναι απίθανο ότι κάποιος εξαρτάται στην πραγματικότητα από αυτή
τη συμπεριφορά. Εάν η βελτιστοποίηση αιχμής έχει απενεργοποιηθεί με την επιλογή -noleaf, η εγγραφή καταλόγου θα
εξετάζεται πάντα και το διαγνωστικό μήνυμα θα εκδίδεται όταν είναι κατάλληλο. Οι συμβολικοί σύνδεσμοι δεν μπορούν
να χρησιμοποιηθούν για τη δημιουργία κύκλων συστήματος αρχείων, αλλά εάν η επιλογή -L ή η επιλογή -follow
είναι σε χρήση, εκδίδεται ένα διαγνωστικό μήνυμα όταν το find συναντά έναν βρόχο συμβολικών συνδέσμων. Όπως
και στους βρόχους που περιέχουν σκληρούς συνδέσμους, η βελτιστοποίηση αιχμής συχνά σημαίνει ότι το find γνωρίζει
ότι δεν χρειάζεται να καλέσει τις συναρτήσεις stat() ή chdir() στον συμβολικό σύνδεσμο, επομένως αυτό το
διαγνωστικό δεν είναι συχνά απαραίτητο.

Η επιλογή -d υποστηρίζεται για λόγους συμβατότητας με διάφορα συστήματα BSD, αλλά θα πρέπει να
χρησιμοποιείτε την επιλογή -depth, η οποία είναι σύμφωνη με το πρότυπο POSIX.

Η μεταβλητή περιβάλλοντος POSIXLY_CORRECT δεν επηρεάζει τη συμπεριφορά των ελέγχων -regex ή -iregex, επειδή αυτοί οι έλεγχοι δεν καθορίζονται στο πρότυπο POSIX.

ΜΕΤΑΒΛΗΤΕΣ ΠΕΡΙΒΑΛΛΟΝΤΟΣ

LANG   Παρέχει μια προεπιλεγμένη τιμή για τις μεταβλητές διεθνοποίησης που δεν έχουν οριστεί ή είναι null.

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

LC_COLLATE
Το πρότυπο POSIX καθορίζει ότι αυτή η μεταβλητή επηρεάζει την αντιστοίχιση προτύπων που χρησιμοποιείται
για την επιλογή -name. Το GNU find χρησιμοποιεί τη συνάρτηση βιβλιοθήκης fnmatch(3), επομένως η υποστήριξη για
το LC_COLLATE εξαρτάται από τη βιβλιοθήκη του συστήματος. Αυτή η μεταβλητή επηρεάζει επίσης την ερμηνεία
της απάντησης στην επιλογή -ok· ενώ η μεταβλητή LC_MESSAGES επιλέγει το πραγματικό πρότυπο που χρησιμοποιείται για την
ερμηνεία της απάντησης στην επιλογή -ok, η ερμηνεία τυχόν εκφράσεων αγκύλης στο πρότυπο θα επηρεαστεί από το LC_COLLATE.

LC_CTYPE
Αυτή η μεταβλητή επηρεάζει τη διαχείριση των κλάσεων χαρακτήρων που χρησιμοποιούνται στις κανονικές εκφράσεις
και επίσης με τον έλεγχο -name, εάν η συνάρτηση βιβλιοθήκης fnmatch(3) του συστήματος υποστηρίζει αυτό. Αυτή η
μεταβλητή επηρεάζει επίσης την ερμηνεία τυχόν κλάσεων χαρακτήρων στις κανονικές εκφράσεις που χρησιμοποιούνται για την ερμηνεία της απάντησης στην προτροπή που εκδίδεται από την επιλογή -ok. Η μεταβλητή περιβάλλοντος LC_CTYPE θα επηρεάσει επίσης τους χαρακτήρες που θεωρούνται μη εκτυπώσιμοι κατά την εκτύπωση των ονομάτων αρχείων· δείτε την ενότητα ΑΣΥΝΗΘΙΣΤΑ ΟΝΟΜΑΤΑ ΑΡΧΕΙΩΝ.

LC_MESSAGES
Καθορίζει την τοπική ρύθμιση που θα χρησιμοποιηθεί για τις διεθνοποιημένες μηνύματα. Εάν η μεταβλητή περιβάλλοντος POSIXLY_CORRECT έχει οριστεί, αυτό καθορίζει επίσης την ερμηνεία της απάντησης στην προτροπή που γίνεται από την ενέργεια -ok.

NLSPATH
Καθορίζει την τοποθεσία των καταλόγων μηνυμάτων διεθνοποίησης.

PATH   Επηρεάζει τους καταλόγους που αναζητούνται για την εύρεση των εκτελέσιμων αρχείων που καλούνται από τις επιλογές -exec, -execdir, -ok και -okdir.

POSIXLY_CORRECT
Καθορίζει το μέγεθος του μπλοκ που χρησιμοποιείται από τις επιλογές -ls και -fls. Εάν το POSIXLY_CORRECT έχει οριστεί, τα μπλοκ είναι μονάδες των 512 byte. Διαφορετικά, είναι μονάδες των 1024 byte.

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

Όταν το POSIXLY_CORRECT δεν έχει οριστεί, η επιλογή -perm +zzz αντιμετωπίζεται ακριβώς όπως η επιλογή -perm /zzz, εάν το +zzz δεν είναι έγκυρη συμβολική λειτουργία. Όταν το POSIXLY_CORRECT έχει οριστεί, αυτές οι κατασκευές αντιμετωπίζονται ως σφάλμα.

Όταν το POSIXLY_CORRECT έχει οριστεί, η απάντηση στην προτροπή που γίνεται από την ενέργεια -ok ερμηνεύεται σύμφωνα με τον κατάλογο μηνυμάτων του συστήματος, σε αντίθεση με την ερμηνεία σύμφωνα με τις δικές του μεταφράσεις μηνυμάτων του find.

TZ     Επηρεάζει τη ζώνη ώρας που χρησιμοποιείται για ορισμένες από τις σχετικές με τον χρόνο οδηγίες μορφοποίησης των επιλογών -printf και
-fprintf.

ΠΑΡΑΔΕΙΓΜΑΤΑ

Απλή προσέγγιση find|xargs

Εύρεση αρχείων με όνομα core στον κατάλογο /tmp ή κάτω από αυτόν και διαγραφή τους. $ find /tmp -name core -type f -print | xargs /bin/rm -f

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


Πιο ασφαλής προσέγγιση για find -print0 | xargs -0

Εντοπίστε αρχεία με όνομα core στον κατάλογο /tmp ή σε υποκαταλόγους του και διαγράψτε τα, επεξεργαζόμενοι τα ονόματα αρχείων με τέτοιο τρόπο ώστε τα ονόματα αρχείων ή καταλόγων που περιέχουν μονές ή διπλές εισαγωγικές, κενά ή νέες γραμμές να αντιμετωπίζονται σωστά.

$ find /tmp -name core -type f -print0 | xargs -0 /bin/rm -f

Η δοκιμή -name γίνεται πριν από τη δοκιμή -type, προκειμένου να αποφευχθεί η κλήση της εντολής stat(2) σε κάθε αρχείο.

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

Επεξεργασία αυθαίρετων σημείων εκκίνησης

Δεδομένου ότι ένα άλλο πρόγραμμα, το proggy, φιλτράρει και δημιουργεί μια τεράστια λίστα αρχείων διαχωρισμένων με NULL, επεξεργαστείτε αυτά τα αρχεία ως σημεία εκκίνησης και βρείτε όλα τα κανονικά, άδεια αρχεία μεταξύ τους:

$ proggy | find -files0-from - -maxdepth 0 -type f -empty

Η χρήση της επιλογής -files0-from - σημαίνει ότι θα διαβάσει τα ονόματα των σημείων εκκίνησης από την τυπική είσοδο, δηλαδή από την αγωγό. Η επιλογή -maxdepth 0 εξασφαλίζει ότι θα εξετάσει μόνο τα συγκεκριμένα στοιχεία χωρίς να εξερευνήσει υποκαταλόγους (στην περίπτωση που ένα από τα σημεία εκκίνησης είναι κατάλογος).

Εκτέλεση μιας εντολής για κάθε αρχείο

Εκτελέστε την εντολή file σε κάθε αρχείο στον τρέχοντα κατάλογο ή σε υποκαταλόγους του.

$ find . -type f -exec file '{}' \;

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

Σε πολλές περιπτώσεις, ίσως είναι προτιμότερη η σύνταξη -exec ... + ή ακόμη καλύτερα η -execdir ... + για λόγους απόδοσης και ασφάλειας.

Διασχίζοντας το σύστημα αρχείων μόνο μία φορά - για 2 διαφορετικές ενέργειες

Διασχίστε το σύστημα αρχείων μόνο μία φορά, καταγράφοντας τα αρχεία και τους καταλόγους με δικαιώματα set-user-ID στο /root/suid.txt και τα μεγάλα αρχεία στο /root/big.txt.

$ find / \
\( -perm -4000 -fprintf /root/suid.txt '%#m %u %p\n' \) , \
\( -size +100M -fprintf /root/big.txt '%-10s %p\n' \)

Αυτό το παράδειγμα χρησιμοποιεί τον χαρακτήρα συνέχισης γραμμής '\' στις δύο πρώτες γραμμές για να υποδείξει στο κέλυφος να συνεχίσει να διαβάζει την εντολή στην επόμενη γραμμή.

Αναζήτηση αρχείων κατά ηλικία

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

$ find $HOME -mtime 0

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

Αναζήτηση αρχείων κατά δικαιώματα

Αναζητήστε αρχεία που είναι εκτελέσιμα αλλά όχι αναγνώσιμα.

$ find /sbin /usr/sbin -executable \! -readable -print

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


$ find . -perm 664

Αρχεία που ικανοποιούν αυτά τα κριτήρια, αλλά έχουν και άλλα bits αδειών (για παράδειγμα, αν κάποιος μπορεί να εκτελέσει το αρχείο) δεν θα ταιριάζουν.

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

$ find . -perm -664

Αυτό θα ταιριάζει με ένα αρχείο που έχει λειτουργία 0777, για παράδειγμα.

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

$ find . -perm /222

Αναζήτηση αρχείων που είναι εγγράψιμα είτε από τον ιδιοκτήτη τους είτε από την ομάδα τους.

$ find . -perm /220
$ find . -perm /u+w,g+w
$ find . -perm /u=w,g=w

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

Αναζήτηση αρχείων που είναι εγγράψιμα τόσο από τον ιδιοκτήτη τους όσο και από την ομάδα τους.

$ find . -perm -220
$ find . -perm -g+w,u+w

Και οι δύο αυτές εντολές κάνουν το ίδιο πράγμα.

Μια πιο περίπλοκη αναζήτηση στις άδειες.

$ find . -perm -444 -perm /222 \! -perm /111
$ find . -perm -a+r -perm /a+w \! -perm /a+x

Και οι δύο αυτές εντολές αναζητούν αρχεία που είναι αναγνώσιμα για όλους (-perm -444 ή -perm -a+r), έχουν τουλάχιστον ένα bit εγγραφής (-perm /222 ή -perm /a+w) αλλά δεν είναι εκτελέσιμα για κανέναν (! -perm /111 ή ! -perm /a+x αντίστοιχα).

Περιορισμός - παράλειψη αρχείων και υποκαταλόγων

Αντιγράψτε το περιεχόμενο του /source-dir στο /dest-dir, αλλά παραλείψτε αρχεία και καταλόγους με όνομα .snapshot (και οτιδήποτε βρίσκεται μέσα σε αυτά). Επίσης, παραλείπει αρχεία ή καταλόγους των οποίων το όνομα τελειώνει με `~`, αλλά όχι το περιεχόμενό τους.

$ cd /source-dir
$ find . -name .snapshot -prune -o \( \! -name '*~' -print0 \) \
| cpio -pmd0 /dest-dir

Η δομή -prune -o ( ... -print0 ) είναι αρκετά κοινή. Η ιδέα εδώ είναι ότι η έκφραση πριν από το -prune αντιστοιχεί σε πράγματα που πρέπει να παραλειφθούν. Ωστόσο, η ενέργεια -prune επιστρέφει αληθές, επομένως το ακόλουθο -o διασφαλίζει ότι η δεξιά πλευρά αξιολογείται μόνο για εκείνους τους καταλόγους στους οποίους δεν εφαρμόστηκε το -prune (το περιεχόμενο των καταλόγων που παραλείφθηκαν δεν επισκέπτεται καν, επομένως το περιεχόμενό τους είναι άσχετο). Η έκφραση στη δεξιά πλευρά του -o βρίσκεται μέσα σε παρενθέσεις μόνο για λόγους σαφήνειας. Αυτό τονίζει ότι η ενέργεια -print0 λαμβάνει χώρα μόνο για πράγματα στα οποία δεν εφαρμόστηκε το -prune. Επειδή η προεπιλεγμένη συνθήκη και μεταξύ των δοκιμών δεσμεύεται πιο αυστηρά από το -o, αυτό είναι το προεπιλεγμένο, αλλά οι παρενθέσεις βοηθούν στην επεξήγηση των όσων συμβαίνουν.

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

$ find repo/ \
\( -exec test -d '{}/.svn' \; \
-or -exec test -d '{}/.git' \; \
-or -exec test -d '{}/CVS' \; \
\) -print -prune

Ενδεικτική έξοδος:

repo/project1/CVS
repo/gnu/project2/.svn
repo/gnu/project3/.svn
repo/gnu/project3/src/.svn
repo/project4/.git

Σε αυτό το παράδειγμα, το -prune αποτρέπει την περιττή είσοδο σε καταλόγους που έχουν ήδη ανακαλυφθεί (για παράδειγμα, δεν αναζητούμε το project3/src επειδή έχουμε ήδη βρει το project3/.svn), αλλά διασφαλίζει ότι οι αδελφοί κατάλογοι (project2 και project3) θα βρεθούν.

Άλλα χρήσιμα παραδείγματα

Αναζήτηση για διάφορους τύπους αρχείων.

$ find /tmp -type f,d,l

Αναζήτηση αρχείων, καταλόγων και συμβολικών συνδέσμων στον κατάλογο /tmp, περνώντας αυτούς τους τύπους ως μια λίστα χωρισμένη με κόμμα (επέκταση GNU), η οποία είναι διαφορετικά ισοδύναμη με το πιο μακρύ, αλλά πιο φορητό:

$ find /tmp \( -type f -o -type d -o -type l \)

Αναζήτηση αρχείων με το συγκεκριμένο όνομα "needle" και διακοπή αμέσως όταν βρεθεί το πρώτο.

$ find / -name needle -print -quit

Επίδειξη της ερμηνείας των μορφοποιητών %f και %h της ενέργειας -printf για ορισμένες ακραίες περιπτώσεις. Ακολουθεί ένα παράδειγμα με μερικά αποτελέσματα.

$ find . .. / /tmp /tmp/TRACE compile compile/64/tests/find -maxdepth 0 -printf '[%h][%f]\n'
[.][.]
[.][..]
[][/]
[][tmp]
[/tmp][TRACE]
[.][compile]
[compile/64/tests][find]

ΚΑΤΑΣΤΑΣΗ ΕΞΟΔΟΥ

Το find εξέρχεται με κατάσταση 0 εάν όλα τα αρχεία υποβάλλονται σε επεξεργασία με επιτυχία, μεγαλύτερη από 0 εάν προκύψουν σφάλματα. Αυτό είναι σκόπιμα μια πολύ ευρεία περιγραφή, αλλά εάν η τιμή επιστροφής είναι μη μηδενική, δεν θα πρέπει να βασίζεστε στην ορθότητα των αποτελεσμάτων του find.

Όταν προκύψει κάποιο σφάλμα, το find μπορεί να σταματήσει αμέσως, χωρίς να ολοκληρώσει όλες τις καθορισμένες ενέργειες. Για παράδειγμα, ορισμένα σημεία εκκίνησης ενδέχεται να μην έχουν εξεταστεί ή ορισμένες εκκρεμείς εκτελέσεις προγραμμάτων για το -exec ... {} + ή το -execdir ... {} + ενδέχεται να μην έχουν εκτελεστεί.

ΙΣΤΟΡΙΚΟ

Ένα πρόγραμμα find εμφανίστηκε στην Έκδοση 5 του Unix ως μέρος του έργου Programmer's Workbench και γράφτηκε από τον Dick Haight. Το Doug McIlroy's A Research UNIX Reader: Annotated Excerpts from the Programmer's Manual, 1971-1986 παρέχει ορισμένες πρόσθετες λεπτομέρειες. Μπορείτε να το διαβάσετε στο διαδίκτυο στη διεύθυνση [https://www.cs.dartmouth.edu/~doug/reader.pdf].

Το GNU find γράφτηκε αρχικά από τον Eric Decker, με βελτιώσεις από τους David MacKenzie, Jay Plett και Tim Wood. Η ιδέα για το find -print0 και το xargs -0 προήλθε από τον Dan Bernstein.

ΣΥΜΒΑΤΟΤΗΤΑ

Από το findutils-4.2.2, τα μεταχαρακτήρες του κελύφους (\`*\', \`?' ή \`[]\' για παράδειγμα) που χρησιμοποιούνται στα πρότυπα ονομάτων αρχείων αντιστοιχούν σε ένα αρχικό \`.\', επειδή η ερμηνεία 126 του IEEE POSIX το απαιτεί αυτό.

Από το findutils-4.3.3, το -perm /000 αντιστοιχεί σε όλα τα αρχεία αντί για κανένα.

Οι χρονικές σφραγίδες με ανάλυση σε νανοδευτερόλεπτα υλοποιήθηκαν στο findutils-4.3.3.

Από το findutils-4.3.11, η ενέργεια -delete ορίζει την κατάσταση εξόδου του find σε μια μη μηδενική τιμή όταν αποτυγχάνει. Ωστόσο, το find δεν θα τερματιστεί αμέσως. Προηγουμένως, η κατάσταση εξόδου του find δεν επηρεαζόταν από την αποτυχία του -delete. Χαρακτηριστικό Προστέθηκε στο Εμφανίζεται επίσης στο -files0-from 4.9.0 -newerXY 4.3.3 BSD -D 4.3.1 -O 4.3.1 -readable 4.3.0 -writable 4.3.0 -executable 4.3.0 -regextype 4.2.24 -exec ... + 4.2.12 POSIX -execdir 4.2.12 BSD -okdir 4.2.12 -samefile 4.2.11 -H 4.2.5 POSIX -L 4.2.5 POSIX -P 4.2.5 BSD -delete 4.2.3 -quit 4.2.3 -d 4.2.3 BSD -wholename 4.2.0 -iwholename 4.2.0 -ignore_readdir_race 4.2.0 -fls 4.0 -ilname 3.8 -iname 3.8 -ipath 3.8 -iregex 3.8


Η σύνταξη -perm +MODE αφαιρέθηκε στην έκδοση findutils-4.5.12, υπέρ του -perm /MODE. Η σύνταξη +MODE είχε καταργηθεί από την έκδοση findutils-4.2.21, η οποία κυκλοφόρησε το 2005.

ΟΥΣΙΩΔΕΙΣ ΠΑΡΑΛΑΒΕΣ

Εκπλήξεις προτεραιότητας τελεστών

Η εντολή find . -name afile -o -name bfile -print δεν θα εκτυπώσει ποτέ το afile, επειδή αυτό είναι στην πραγματικότητα ισοδύναμο με την find . -name afile -o ( -name bfile -a -print ). Να θυμάστε ότι η προτεραιότητα του -a είναι υψηλότερη από αυτή του -o και όταν δεν καθορίζεται τελεστής μεταξύ των δοκιμών, υποτίθεται το -a.

«μήνυμα σφάλματος: οι διαδρομές πρέπει να προηγούνται της έκφρασης»
$ find . -name *.c -print
find: οι διαδρομές πρέπει να προηγούνται της έκφρασης
find: πιθανό μη αποσπασμένο μοτίβο μετά από το κατηγόρημα `-name'?

Αυτό συμβαίνει όταν το κέλυφος μπορεί να επεκτείνει το μοτίβο *.c σε περισσότερα από ένα ονόματα αρχείων που υπάρχουν στον τρέχοντα κατάλογο και περνά τα προκύπτοντα ονόματα αρχείων στη γραμμή εντολών στο find όπως αυτό: find . -name frcode.c locate.c word_io.c -print Αυτή η εντολή, φυσικά, δεν θα λειτουργήσει, επειδή το κατηγόρημα -name επιτρέπει ακριβώς ένα μόνο μοτίβο ως όρισμα. Αντί να το κάνετε με αυτόν τον τρόπο, θα πρέπει να περικλείσετε το μοτίβο σε εισαγωγικά ή να διαφύγετε τον χαρακτήρα wildcard, επιτρέποντας έτσι στο find να χρησιμοποιήσει το μοτίβο με τον χαρακτήρα wildcard κατά τη διάρκεια της αναζήτησης για αντιστοίχιση ονομάτων αρχείων αντί για ονόματα αρχείων που έχουν επεκταθεί από το κέλυφος: $ find . -name '*.c' -print $ find . -name *.c -print

ΣΦΑΛΜΑΤΑ

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

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

ΑΝΑΦΟΡΑ ΣΦΑΛΜΑΤΩΝ

Διαδικτυακή βοήθεια για το GNU findutils: [https://www.gnu.org/software/findutils/#get-help] Αναφέρετε τυχόν σφάλματα μετάφρασης στο [https://translationproject.org/team/]

Αναφέρετε τυχόν άλλο ζήτημα μέσω της φόρμας στον εντοπιστή σφαλμάτων του GNU Savannah: [https://savannah.gnu.org/bugs/?group=findutils] Γενικά θέματα σχετικά με το πακέτο GNU findutils συζητούνται στη λίστα αλληλογραφίας bug-findutils: [https://lists.gnu.org/mailman/listinfo/bug-findutils]

ΠΝΕΥΜΑΤΙΚΑ ΔΙΚΑΙΩΜΑΤΑ

Πνευματικά δικαιώματα © 1990–2024 Free Software Foundation, Inc. Άδεια GPLv3+: GNU GPL έκδοση 3 ή μεταγενέστερη [https://gnu.org/licenses/gpl.html]. Αυτό είναι ελεύθερο λογισμικό: έχετε το δικαίωμα να το αλλάξετε και να το αναδιανείμετε. Δεν υπάρχει ΚΑΜΙΑ ΕΓΓΥΗΣΗ, στο μέγιστο βαθμό που επιτρέπεται από το νόμο.


ΔΕΣ ΕΠΙΣΗΣ

chmod(1), locate(1), ls(1), updatedb(1), xargs(1), lstat(2), stat(2), ctime(3) fnmatch(3), printf(3), strftime(3), locatedb(5), regex(7)

Πλήρης τεκμηρίωση [https://www.gnu.org/software/findutils/find] ή διαθέσιμη τοπικά μέσω: info find