Χρησιμοποιώντας το Glob with Directories στο Ruby

click fraud protection

"Κοσκίνισμα"αρχεία (με Dir.glob) στο Ruby σας επιτρέπει να επιλέξετε μόνο τα αρχεία που θέλετε, όπως όλα τα αρχεία XML, σε έναν συγκεκριμένο κατάλογο. Αν και Dir.blog είναι αρέσει κανονικές εκφράσεις, δεν είναι. Είναι πολύ περιορισμένη σε σύγκριση με Ρουμπίνι's κανονικές εκφράσεις και είναι πιο στενά συνδεδεμένη με wildcards επέκταση κελύφους.

Το αντίθετο της σφαίρας, που αναπαράγεται πάνω από όλα τα αρχεία σε έναν κατάλογο, μπορεί να γίνει με το Dir.foreach μέθοδος.

Παράδειγμα

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

instagram viewer
 #! / usr / bin / env ruby


 Dir.glob ('*. Rb') το καθένα κάνει | f |

 βάζει f

 τέλος

Χαρακτήρες και περισσότερα

Υπάρχουν μόνο λίγα μπαλαντέρ για μάθηση:

  • * - Αγώνας μηδέν ή περισσότερους χαρακτήρες. Μια σφαίρα που αποτελείται μόνο από τον αστερίσκο και κανένα άλλο χαρακτήρα ή μπαλαντέρ δεν θα ταιριάζει με όλα τα αρχεία στον τρέχοντα κατάλογο. Ο αστερίσκος συνήθως συνδυάζεται με μια επέκταση αρχείου, αν όχι περισσότερους χαρακτήρες για να περιορίσετε την αναζήτηση.
  • ** - Ταιριάξτε όλους τους καταλόγους αναδρομικά. Αυτό χρησιμοποιείται για να κατέβει στην δέντρο καταλόγου και να βρει όλα τα αρχεία σε δευτερεύοντες κατάλογους του τρέχοντος καταλόγου, και όχι μόνο τα αρχεία στον τρέχοντα κατάλογο. Αυτό το μπαλαντέρ εξετάζεται στον παρακάτω κώδικα παράδειγμα.
  • ? - Ταιριάξτε έναν χαρακτήρα. Αυτό είναι χρήσιμο για την εύρεση αρχείων των οποίων το όνομα είναι σε μια συγκεκριμένη μορφή. Για παράδειγμα, 5 χαρακτήρες και μια επέκταση .xml θα μπορούσαν να εκφραστούν ως ... xml.
  • [a-z] - Ταιριάξτε κάθε χαρακτήρα στο σύνολο χαρακτήρων. Το σετ μπορεί να είναι είτε μια λίστα χαρακτήρων είτε μια περιοχή χωρισμένη με τον χαρακτήρα παύλα. Τα σύνολα χαρακτήρων ακολουθούν την ίδια σύνταξη και συμπεριφέρονται με τον ίδιο τρόπο όπως τα σύνολα χαρακτήρων σε κανονικές εκφράσεις.
  • {a, b} - Σχέδιο αντιστοίχισης a ή b. Αν και αυτό μοιάζει με έναν κανονικό προσδιοριστή εκφράσεων, δεν είναι. Για παράδειγμα, στην κανονική έκφραση, το μοτίβο α {1,2} θα ταιριάζει με 1 ή 2 χαρακτήρες. Σε σφαίρες, θα ταιριάζει με το string Α'1 ή Α2. Άλλα μοτίβα μπορούν να ενσωματωθούν μέσα σε αυτό το κατασκεύασμα.

Ένα πράγμα που πρέπει να εξετάσουμε είναι περίπτωση ευαισθησίας. Εναπόκειται στο λειτουργικό σύστημα να καθορίσει εάν TEST.txt και Δοκιμή. Κείμενο ανατρέξτε στο ίδιο αρχείο. Στο Linux και σε άλλα συστήματα, αυτά είναι διαφορετικά αρχεία. Στα Windows, αυτά θα αναφέρονται στο ίδιο αρχείο.

Το λειτουργικό σύστημα είναι επίσης υπεύθυνο για τη σειρά με την οποία εμφανίζονται τα αποτελέσματα. Μπορεί να διαφέρει εάν βρίσκεστε σε Windows versus Linux, για παράδειγμα.

Ένα τελευταίο πράγμα που πρέπει να σημειωθεί είναι το Dir [globstring] ευκολία. Αυτό είναι λειτουργικά το ίδιο με το Dir.glob (σφαιρίνη) και είναι επίσης σημασιολογικά σωστή (κάνετε ευρετηρίαση ενός καταλόγου, σαν ένα πίνακα). Για το λόγο αυτό, μπορείτε να δείτε Dir [] περισσότερες φορές Dir.glob, αλλά είναι το ίδιο πράγμα.

Παραδείγματα Χρησιμοποιώντας χαρακτήρες wildcards

Το παρακάτω παράδειγμα προγράμματος θα επιδείξει πολλά πρότυπα όπως μπορεί σε πολλούς διαφορετικούς συνδυασμούς.

 #! / usr / bin / env ruby


 # Αποκτήστε όλα τα αρχεία .xml

 Διεύθυνση ['*. Xml']


 # Αποκτήστε όλα τα αρχεία με 5 χαρακτήρες και επέκταση .jpg

 Διεύθυνση ['... jpg']


 # Αποκτήστε όλες τις εικόνες jpg, png και gif

 Διεύθυνση ['*. {Jpg, png, gif}']


 # Κατεβείτε στο δέντρο του καταλόγου και λάβετε όλες τις εικόνες jpg

 # Σημείωση: αυτό θα φέρει επίσης εικόνες jpg στον τρέχοντα κατάλογο

 Διεύθυνση ['** / *. Jpg']


 # Κατεβάστε σε όλους τους καταλόγους που ξεκινούν με Uni και βρείτε όλα

 # jpg εικόνες.

 # Σημείωση: αυτό καταλήγει μόνο σε έναν κατάλογο

 Διεύθυνση ['Uni ** / *. Jpg']


 # Κατεβάστε σε όλους τους καταλόγους που ξεκινούν με το Uni και όλα

 # υποκαταλόγους καταλόγων που ξεκινούν με Uni και βρίσκουν

 # όλες οι εικόνες .jpg

 Διεύθυνση ['Uni ** / ** / *. Jpg']

instagram story viewer