6.20. Znajdowanie plików o określonej własności
Problem
Chcemy znaleźć w drzewie katalogów wszystkie pliki spełniające określone kryterium — na przykład wszystkie puste pliki, wszystkie pliki MP3, wszystkie pliki o nazwie README
itp.
Rozwiązanie
Należy wykorzystać metodę Find.find
, przechodzącą przez drzewo katalogów i kolekcjonującą wszystkie pliki spełniające podane kryterium.
Kryterium to jest treścią bloku kodowego metody. Ścieżki wszystkich plików, dla których blok ten zwraca wartość true
, gromadzone są w tablicy zwracanej jako wynik metody.
require 'find' module Find def match(*paths) matched = [] find(*paths) { |path| matched << path if yield path } return matched end module_function :match end
Oto wynik, jaki zwrócić może metoda ...
Get Ruby. Receptury now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.