Używanie Globa z katalogami

Mała dziewczynka uczy się kodować na komputerze stacjonarnym w domu

Imgorthand / Getty Images





' Globbing ' pliki (z Dir.glob ) w Ruby pozwala wybrać tylko te pliki, które chcesz, takie jak wszystkie pliki XML, w danym katalogu. Nawet jeśli dir.blog jest tak jak wyrażeń regularnych, tak nie jest. Jest bardzo ograniczony w porównaniu do Rubin wyrażeń regularnych i jest ściślej powiązany z symbolami wieloznacznymi rozszerzeń powłoki.

Przeciwieństwem globbingu, iteracji po wszystkich plikach w katalogu, można dokonać za pomocą Kier.foreach metoda.



Przykład

Poniższy glob będzie pasował do wszystkich plików kończących się na .rb w bieżący katalog . Używa pojedynczego symbolu wieloznacznego, gwiazdki. Gwiazdka dopasuje zero lub więcej znaków, więc każdy plik kończący się na .rb będzie pasować do tego globu, w tym pliku o nazwie po prostu .rb , bez wartości przed rozszerzeniem pliku i poprzedzającym go okresem. Metoda glob zwróci wszystkie pliki, które pasują do reguł globowania jako tablicę, którą można zapisać do późniejszego użycia lub iterować.

|_+_||_+_|
|_+_|
|_+_|
|_+_|
|_+_|

Symbole wieloznaczne i nie tylko

Do nauczenia się jest tylko kilka symboli wieloznacznych:



    *– Dopasuj zero lub więcej znaków. Glob składający się tylko z gwiazdki i bez innych znaków lub symboli wieloznacznych będzie pasował do wszystkich plików w bieżącym katalogu. Gwiazdka jest zwykle połączona z rozszerzeniem pliku, jeśli nie z większą liczbą znaków, aby zawęzić wyszukiwanie.**– Dopasuj wszystkie katalogi rekursywnie. Służy do zejścia do drzewa katalogów i znalezienia wszystkich plików w podkatalogach bieżącego katalogu, a nie tylko plików w bieżącym katalogu. Ten symbol wieloznaczny jest omówiony w poniższym przykładowym kodzie.?– Dopasuj dowolną postać. Jest to przydatne do wyszukiwania plików, których nazwy są w określonym formacie. Na przykład 5 znaków i rozszerzenie .xml można wyrazić jako ?????.xml .[a-z]– Dopasuj dowolny znak z zestawu znaków. Zestaw może być listą znaków lub zakresem oddzielonym łącznikiem. Zestawy znaków mają taką samą składnię i zachowują się w taki sam sposób, jak zestawy znaków w wyrażeniach regularnych.{a,b}– Dopasuj wzór a lub b. Chociaż wygląda to na kwantyfikator wyrażenia regularnego, tak nie jest. Na przykład w wyrażeniu regularnym wzorzec a{1,2} dopasuje 1 lub 2 znaki 'a'. W globbingu będzie pasował do ciągu a1 lub a2 . Wewnątrz tej konstrukcji można zagnieżdżać inne wzorce.

Jedną rzeczą do rozważenia jest rozróżnianie wielkości liter . Od systemu operacyjnego zależy, czy TEST.txt oraz Test.TxT odnoszą się do tego samego pliku. W systemie Linux i innych systemach są to różne pliki. W systemie Windows będą one odnosić się do tego samego pliku.

System operacyjny odpowiada również za kolejność wyświetlania wyników. Może się różnić, jeśli korzystasz z systemu Windows, w porównaniu z Linux , na przykład.

Ostatnią rzeczą, na którą należy zwrócić uwagę, jest Dir[ciąg znaków] metoda wygody. To jest funkcjonalnie to samo, co Dir.glob(string) i jest również poprawny semantycznie (indeksujesz katalog, podobnie jak tablica). Z tego powodu możesz zobaczyć ty[] częściej niż Dir.glob , ale są tym samym.

Przykłady używania symboli wieloznacznych

Poniższy przykładowy program zademonstruje jak najwięcej wzorców w wielu różnych kombinacjach.



|_+_||_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|