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 O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.