Ruby 4.1 リファレンスマニュアル

singleton method Dir.scan

scan(path) -> [[String, Symbol]]Ruby 4.1 から[permalink][rdoc][edit]
scan(path, encoding: enc) -> [[String, Symbol]]
scan(path) {|entry_name, entry_type| ... } -> nil
scan(path, encoding: enc) {|entry_name, entry_type| ... } -> nil

ディレクトリ path に含まれるファイルエントリ名と、その種別の組を取得します。

"." と ".." は含みません。エントリの並び順はファイルシステムに依存します。

ブロックを与えなかった場合は、エントリ名とその種別からなる 2 要素の配列を要素とする配列を返します。

ブロックを与えた場合は、各エントリのエントリ名とその種別を引数としてブロックを評価し、nil を返します。

エントリの種別は :file・:directory・:characterSpecial・:blockSpecial・ :fifo・:link・:socket・:unknown のいずれかのシンボルです。ファイルシステムが種別を判別できない場合は :unknown になりますが、可能であれば lstat を使って実際の種別を判定してから割り当てます。

[PARAM] path:
ディレクトリのパスを文字列で指定します。
[PARAM] encoding:
ディレクトリのエンコーディングを文字列か Encoding オブジェクトで指定します。省略した場合はファイルシステムのエンコーディングと同じになります。
[EXCEPTION] Errno::EXXX:
失敗した場合に発生します。
例
p Dir.scan('/example') # => [["config.h", :file], ["lib", :directory], ["main.rb", :file]]

entries = []
Dir.scan('/example') {|entry_name, entry_type| entries << [entry_name, entry_type] } # => nil
p entries # => [["config.h", :file], ["lib", :directory], ["main.rb", :file]]

[SEE_ALSO] Dir#scan

[SEE_ALSO] Dir.children

[SEE_ALSO] Dir.entries