Γιατί είναι δύσκολο:
* Βασική σφαίρα: Τα τυποποιημένα κελύφη UNIX χρησιμοποιούν βασικά πρότυπα σφαιρίδας (*,?, [], Κλπ.). Αυτά μπορούν να ταιριάξουν με οποιαδήποτε περίπτωση χαρακτήρων, αλλά δεν μπορούν να διακρίνουν μεταξύ κεφαλαίων και πεζών για συγκεκριμένο φιλτράρισμα.
Η λύση:Χρήση `` find` και `grep`
Μπορείτε να συνδυάσετε το `Find` και το` grep` για να το πετύχετε αυτό. Εδώ είναι:
`` `bash
Βρείτε. -Type F -print0 | grep -ez '^./[^/]*[a -z] \. xargs -0 ls -l
`` `
Επεξήγηση:
1. `Βρείτε. -Type f -print0`:
- `Βρείτε. ':Ξεκινά να ψάχνετε στον τρέχοντα κατάλογο (`.')
- `-type f`:φαίνεται μόνο για κανονικά αρχεία
- `-print0`:εκτυπώσεις που βρέθηκαν αρχεία που χωρίζονται από μηδενικούς χαρακτήρες (ασφαλέστερα για ονόματα αρχείων με κενά)
2. `grep -ez '^.
- `grep`:φίλτρα της παραγωγής του` ind '
- `-e`:επιτρέπει εκτεταμένες κανονικές εκφράσεις για μεγαλύτερη ευελιξία
-`-z`:Αντιμετωπίζει τις εισροές ως μηδενικές χορδές
- Η κανονική έκφραση:
- `^./`:Ταιριάζει με την αρχή της γραμμής, ακολουθούμενη από "./" (για να ταιριάζει με σχετικές διαδρομές)
- `[^/]*`:ταιριάζει με τους χαρακτήρες εκτός από το "/" (εξασφαλίζοντας ότι είμαστε ακόμα εντός του ονόματος αρχείου)
- `[a-z]`:ταιριάζει με ένα μόνο πεζά γράμμα
- `\.? [^/]*`:Ταιριάζει με μια προαιρετική dot (`. ') Ακολουθούμενη από οποιονδήποτε χαρακτήρα εκτός από"/"
- `$`:ταιριάζει με το τέλος της γραμμής
3. `xargs -0 ls -l`:
-`xargs -0`:Παίρνει τη λίστα αρχείων που δεν έχει τερματιστεί με το null από το` grep` και δημιουργεί επιχειρήματα εντολών
- `ls -l`:Καταγράφει τα αρχεία (μπορείτε να το αλλάξετε σε οποιαδήποτε εντολή θέλετε να εκτελέσετε τα αρχεία που έχουν φιλτραριστεί)
Σημαντικές σημειώσεις:
* Κρυμμένα αρχεία: Αυτό θα βρει κρυμμένα αρχεία (ξεκινώντας από το '.') Που πληρούν τα κριτήρια.
* Ευαισθησία στην περίπτωση: Η επέκταση ονόματος αρχείου του κελύφους σας μπορεί να είναι ευαίσθητη σε περιπτώσεις ή μη ευαίσθητη.
Επιτρέψτε μου να ξέρω αν θέλετε να βελτιώσετε περαιτέρω την αναζήτηση!
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα