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.