Používání Glob s adresáři v Ruby

click fraud protection

"Globbing"soubory (s Dir.glob) v Ruby vám umožní vybrat pouze soubory, které chcete, například všechny soubory XML, v daném adresáři. Přestože Dir.blog je jako regulární výrazy, to není. Ve srovnání s Rubínregulární výrazy a více se vztahují k zástupným znakům rozšiřování prostředí.

Opak globbingu, který se opakuje ve všech souborech v adresáři, lze provést pomocí Dir.foreach metoda.

Příklad

Následující glob odpovídá všem souborům končícím na .rb v aktuální adresář. Používá jeden zástupný znak, hvězdičku. Hvězdička bude odpovídat nule nebo více znakům, takže jakýkoli soubor končící na .rb bude odpovídat této glob, včetně souboru s názvem jednoduše .rb, bez přípony souboru a předcházejícího období. Metoda glob vrátí všechny soubory, které odpovídají pravidlům globbing, jako pole, které lze uložit pro pozdější použití nebo opakovat.

 #! / usr / bin / env ruby


 Dir.glob ('*. Rb'). Každý do | f |

 klade f

 konec

Zástupné znaky a další

Naučit se můžete jen několik zástupných znaků:

  • * - Shoda nula nebo více znaků. Globus skládající se pouze z hvězdičky a žádné další znaky nebo zástupné znaky se bude shodovat se všemi soubory v aktuálním adresáři. Hvězdička je obvykle kombinována s příponou souboru, pokud není více znaků, aby se vyhledávání zúžilo.
    instagram viewer
  • ** - Porovnejte všechny adresáře rekurzivně. Slouží k sestupu do stromu adresářů a k nalezení všech souborů v podadresářích aktuálního adresáře, nikoli pouze souborů v aktuálním adresáři. Tato zástupná značka je prozkoumána v níže uvedeném příkladu kódu.
  • ? - Srovnejte libovolnou postavu. To je užitečné při hledání souborů, jejichž název je v určitém formátu. Například 5 znaků a přípona .xml lze vyjádřit jako ... xml.
  • [a-z] - Srovnejte libovolný znak v sadě znaků. Sada může být buď seznam znaků, nebo rozsah oddělený spojovníkem. Znakové sady sledují stejnou syntaxi jako a chovají se stejným způsobem jako znakové sady v regulárních výrazech.
  • {a, b} - Shoda vzoru a nebo b. Ačkoli to vypadá jako kvantifikátor regulárního výrazu, není. Například v regulárním výrazu vzor a {1,2} bude odpovídat 1 nebo 2 'a' znakům. V globbing to bude odpovídat řetězci a1 nebo a2. Uvnitř tohoto konstruktu mohou být vnořeny další vzory.

Jedna věc, kterou je třeba zvážit, je citlivost na velká a malá písmena. Záleží na operačním systému, aby určil, zda TEST.txt a Test. TxT odkazovat na stejný soubor. V systému Linux a dalších systémech se jedná o odlišné soubory. V systému Windows se budou odkazovat na stejný soubor.

Operační systém také odpovídá za pořadí, ve kterém jsou výsledky zobrazeny. Může se lišit, pokud používáte Windows versus Linux, například.

Jedna poslední věc, kterou je třeba poznamenat, je Dir [globstring] metoda pohodlí. Toto je funkčně stejné jako Dir.glob (globstring) a je také sémanticky správná (indexujete adresář, podobně jako pole). Z tohoto důvodu můžete vidět Dir [] častěji než Dir.glob, ale jsou to stejné.

Příklady použití zástupných znaků

Následující příklad programu předvede tolik vzorů, kolik může v mnoha různých kombinacích.

 #! / usr / bin / env ruby


 # Získejte všechny soubory .xml

 Dir ['*. Xml']


 # Získejte všechny soubory s 5 znaky a příponou .jpg

 Dir ['... jpg']


 # Získejte všechny obrázky ve formátu JPG, PNG a GIF

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


 # Sestoupit do stromu adresářů a získat všechny obrázky jpg

 # Poznámka: toto také uloží obrázky jpg do aktuálního adresáře

 Dir ['** / *. Jpg']


 # Sestoupit do všech adresářů počínaje Uni a najít vše

 # jpg obrázky.

 # Poznámka: toto sestupuje pouze o jeden adresář

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


 # Sestoupit do všech adresářů počínaje Uni a všemi

 # podadresáře adresářů počínaje Uni a find

 # všechny obrázky .jpg

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

instagram story viewer