Glob'u Ruby'de Dizinlerle Kullanma

"globbing"dosya (ile Dir.glob) Ruby'de yalnızca belirli bir dizinde tüm XML dosyaları gibi istediğiniz dosyaları seçmenize olanak tanır. Buna rağmen Dir.blog dır-dir sevmek düzenli ifadeler değil. İle karşılaştırıldığında çok sınırlı Yakut'nin düzenli ifadeleri ve kabuk genişletme joker karakterleriyle daha yakından ilgilidir.

Bir dizindeki tüm dosyaları yineleyen globbing'in tersi, Dir.foreach yöntem.

Misal

Aşağıdaki glob ile biten tüm dosyalarla eşleşecek .rb içinde geçerli dizin. Tek bir joker karakter, yıldız işareti kullanır. Yıldız işareti sıfır veya daha fazla karakterle eşleşir, bu nedenle ile biten tüm dosyalar .rb basitçe adlandırılan bir dosya da dahil olmak üzere bu glob ile eşleşecek .rb, dosya uzantısı ve önceki döneminden önce hiçbir şey içermiyor. Glob yöntemi, globbing kurallarına uyan tüm dosyaları bir dizi olarak döndürür ve daha sonra kullanılmak üzere kaydedilebilir veya tekrarlanabilir.

 #! / usr / bin / env yakut


 Dir.glob ('*. Rb'). Her biri | f |

 f koyar

 son

Joker Karakterler ve Daha Fazlası

instagram viewer

Öğrenilecek sadece birkaç joker karakter var:

  • * - Sıfır veya daha fazla karakteri eşleştirin. Yalnızca yıldız işaretinden oluşan ve başka hiçbir karakter veya joker karakterden oluşan bir glob, geçerli dizindeki tüm dosyalarla eşleşecektir. Aramayı daraltmak için daha fazla karakter yoksa yıldız işareti genellikle bir dosya uzantısıyla birleştirilir.
  • ** - Tüm dizinleri özyinelemeli olarak eşleştirin. Bu, dizin ağacına inmek ve yalnızca geçerli dizindeki dosyalar yerine geçerli dizinin alt dizinlerindeki tüm dosyaları bulmak için kullanılır. Bu joker karakter aşağıdaki örnek kodda incelenmiştir.
  • ? - Herhangi bir karakteri eşleştirin. Bu, adı belirli bir biçimde olan dosyaları bulmak için kullanışlıdır. Örneğin, 5 karakter ve bir .xml uzantısı şu şekilde ifade edilebilir: ... xml.
  • [A-z] - Karakter setindeki herhangi bir karakteri eşleştirin. Küme, bir karakter listesi veya kısa çizgi karakteriyle ayrılmış bir aralık olabilir. Karakter kümeleri aynı sözdizimini izler ve normal ifadelerde karakter kümeleriyle aynı şekilde davranır.
  • {a, b} - Eşleşme düzeni a veya b. Bu normal bir ifade nicelik belirteci gibi görünse de, öyle değil. Örneğin, normal ifadede, kalıp bir {1,2} 1 veya 2 'a' karakteriyle eşleşir. Globbing, bu dize eşleşecek a1 veya a2. Diğer yapılar bu yapının içine yerleştirilebilir.

Dikkate alınması gereken bir şey büyük küçük harf duyarlılığı. İşletim sistemine bağlı olup olmadığını belirlemek tEST.TXT ve Ölçek. Txt aynı dosyaya bakın. Linux ve diğer sistemlerde bunlar farklı dosyalardır. Windows'da bunlar aynı dosyaya atıfta bulunur.

İşletim sistemi, sonuçların görüntülendiği sıradan da sorumludur. Windows'a karşıysanız farklı olabilir Linux, Örneğin.

Dikkat edilmesi gereken son bir şey, Dir [globstring] kolaylık yöntemi. Bu işlevsel olarak aynı Dir.glob (globstring) ve aynı zamanda anlamsal olarak doğrudur (bir dizini, bir dizi gibi dizine ekliyorsunuz). Bu nedenle, Dir [] daha sık Dir.glob, ama aynı şey.

Joker Karakter Kullanan Örnekler

Aşağıdaki örnek program, birçok farklı kombinasyonda olabildiğince çok desen gösterecektir.

 #! / usr / bin / env yakut


 # Tüm .xml dosyalarını edinin

 Dir [ '*. Xml']


 # 5 karakter ve bir .jpg uzantılı tüm dosyaları alın

 Dir [ '... jpg']


 # Tüm jpg, png ve gif resimlerini edinin

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


 # Dizin ağacına inin ve tüm jpg görüntülerini alın

 # Not: bu ayrıca geçerli dizindeki jpg görüntülerini de dosyalayacaktır

 Dir [ '** / *. Jpg']


 # Uni ile başlayan tüm dizinlere inin ve hepsini bulun

 # jpg görüntüleri.

 # Not: bu sadece bir dizine iner

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


 # Uni ile başlayan tüm dizinlere inin ve

 # Uni ile başlayan dizinlerin alt dizinleri

 # all .jpg resimler

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

instagram story viewer