Menggunakan Glob dengan Direktori di Ruby

"Globbing"file (dengan Dir.glob) di Ruby memungkinkan Anda memilih hanya file yang Anda inginkan, seperti semua file XML, di direktori yang diberikan. Meskipun Dir.blog adalah Suka ekspresi reguler, bukan. Ini sangat terbatas dibandingkan dengan RubiEkspresi reguler dan lebih erat terkait dengan wildcard ekspansi shell.

Kebalikan dari globbing, iterasi atas semua file dalam direktori, dapat dilakukan dengan Dir.foreach metode.

Contoh

Glob berikut akan cocok dengan semua file yang berakhiran .rb dalam direktori saat ini. Ini menggunakan wildcard tunggal, tanda bintang. Tanda bintang akan cocok dengan nol atau lebih karakter, sehingga file apa pun yang berakhiran .rb akan cocok dengan glob ini, termasuk file yang disebut sederhana .rb, dengan tidak ada sebelum ekstensi file dan periode sebelumnya. Metode glob akan mengembalikan semua file yang cocok dengan aturan globbing sebagai array, yang dapat disimpan untuk digunakan nanti atau diulangi.

 #! / usr / bin / env ruby


 Dir.glob ('*. Rb'). Masing-masing do | f |

 menempatkan f

 akhir

instagram viewer

Kartu Liar dan Lainnya

Hanya ada beberapa wildcard untuk dipelajari:

  • * - Cocokkan nol atau lebih karakter. Gumpalan yang hanya terdiri dari tanda bintang dan tidak ada karakter atau wildcard lain yang akan cocok dengan semua file di direktori saat ini. Tanda bintang biasanya dikombinasikan dengan ekstensi file jika tidak lebih banyak karakter untuk mempersempit pencarian.
  • ** - Cocokkan semua direktori secara rekursif. Ini digunakan untuk turun ke pohon direktori dan menemukan semua file di sub-direktori direktori saat ini, bukan hanya file di direktori saat ini. Wildcard ini dieksplorasi dalam kode contoh di bawah ini.
  • ? - Cocokkan satu karakter. Ini berguna untuk menemukan file yang namanya dalam format tertentu. Misalnya, 5 karakter dan ekstensi .xml dapat dinyatakan sebagai ... xml.
  • [a-z] - Cocokkan semua karakter dalam set karakter. Himpunan dapat berupa daftar karakter atau rentang yang dipisahkan dengan karakter tanda hubung. Set karakter mengikuti sintaksis yang sama dan berperilaku dengan cara yang sama seperti set karakter dalam ekspresi reguler.
  • {a, b} - Pola kecocokan a atau b. Meskipun ini terlihat seperti kuantifier ekspresi reguler, tidak. Misalnya, dalam ekspresi reguler, polanya a {1,2} akan cocok dengan karakter 1 atau 2 'a'. Dalam globbing, itu akan cocok dengan string a1 atau a2. Pola lain dapat bersarang di dalam konstruksi ini.

Satu hal yang perlu dipertimbangkan adalah sensitivitas case. Terserah sistem operasi untuk menentukan apakah TEST.txt dan Uji. Txt lihat file yang sama. Di Linux dan sistem lain, ini adalah file yang berbeda. Di Windows, ini akan merujuk ke file yang sama.

Sistem operasi juga bertanggung jawab atas urutan hasil yang ditampilkan. Mungkin berbeda jika Anda menggunakan Windows versus Linux, sebagai contoh.

Satu hal terakhir yang perlu diperhatikan adalah Dir [globstring] metode kenyamanan. Secara fungsional ini sama dengan Dir.glob (globstring) dan secara semantik benar (Anda mengindeks direktori, mirip array). Untuk alasan ini, Anda dapat melihatnya Dir [] lebih sering daripada Dir.glob, tetapi mereka adalah hal yang sama.

Contohnya Menggunakan Wildcard

Contoh program berikut akan menunjukkan pola sebanyak mungkin dalam banyak kombinasi berbeda.

 #! / usr / bin / env ruby


 # Dapatkan semua file .xml

 Dir ['*. Xml']


 # Dapatkan semua file dengan 5 karakter dan ekstensi .jpg

 Dir ['... jpg']


 # Dapatkan semua gambar jpg, png, dan gif

 Dir ['*. {Jpg, png, gif}']


 # Turun ke pohon direktori dan dapatkan semua gambar jpg

 # Catatan: ini juga akan file gambar jpg di direktori saat ini

 Dir ['** / *. Jpg']


 # Turun ke semua direktori dimulai dengan Uni dan temukan semua

 # gambar jpg.

 # Catatan: ini hanya menurunkan satu direktori

 Dir ['Uni ** / *. Jpg']


 # Turun ke semua direktori dimulai dengan Uni dan semua

 # subdirektori direktori yang dimulai dengan Uni dan temukan

 # all .jpg gambar

 Dir ['Uni ** / ** / *. Jpg']

instagram story viewer