Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
Dir.glob / mkdir / pwd / entries
ディレクトリの作成・一覧取得・パターンマッチングを行うメソッドです。ファイルシステムの操作に使用します。
構文
# パターンに一致するファイル・ディレクトリの一覧を取得します。
Dir.glob("パターン")
Dir["パターン"] # glob の省略形
# ディレクトリを作成します。
Dir.mkdir("ディレクトリ名")
FileUtils.mkdir_p("パス/の/中間も含めて") # 中間ディレクトリも作成
# 現在のディレクトリを取得します。
Dir.pwd
# ディレクトリの内容一覧を取得します。
Dir.entries("ディレクトリ名")
# ディレクトリを移動して処理します(ブロック終了後に戻る)。
Dir.chdir("ディレクトリ名") { 処理 }
メソッド一覧
| メソッド | 概要 |
|---|---|
| Dir.glob | ワイルドカードパターンに一致するパスの配列を返します。 |
| Dir.mkdir | ディレクトリを作成します。中間ディレクトリが存在しない場合はエラーになります。 |
| FileUtils.mkdir_p | 中間ディレクトリを含めて再帰的にディレクトリを作成します。 |
| Dir.pwd | 現在の作業ディレクトリのパスを文字列で返します。 |
| Dir.entries | ディレクトリ内のすべてのエントリ名を配列で返します("."と".."を含む)。 |
| Dir.exist? | ディレクトリが存在するかどうかを確認します。 |
サンプルコード
require 'fileutils'
# 現在のディレクトリを表示します。
puts Dir.pwd
# glob でRubyファイルを検索します。
Rubyファイル = Dir.glob("*.rb")
puts Rubyファイル.inspect
# サブディレクトリも含めて検索します(** はすべての深さ)。
全Rubyファイル = Dir.glob("**/*.rb")
puts "Rubyファイル数: #{全Rubyファイル.count}"
# ディレクトリを作成します。
unless Dir.exist?("output")
Dir.mkdir("output")
puts "output ディレクトリを作成しました。"
end
# 中間ディレクトリを含めて作成します。
FileUtils.mkdir_p("data/2024/january")
puts "ネストしたディレクトリを作成しました。"
# entries で一覧を取得します("."と".."を除く)。
エントリ = Dir.entries(".").reject { |e| e.start_with?(".") }
puts "現在のディレクトリ内: #{エントリ.inspect}"
# 複数の拡張子をまとめて検索します。
画像ファイル = Dir.glob("*.{png,jpg,gif}")
puts "画像ファイル: #{画像ファイル.inspect}"
概要
『Dir.glob』はワイルドカード(『*』『**』『?』)を使ったパターンマッチングでファイルを検索します。『**』はすべての深さのサブディレクトリを意味するため、プロジェクト全体のファイル検索に活用できます。
ディレクトリ作成には『Dir.mkdir』と『FileUtils.mkdir_p』があります。『Dir.mkdir』は親ディレクトリが存在しないとエラーになるため、深いパスを作成する場合は必ず『FileUtils.mkdir_p』を使用してください。『FileUtils』を使う際は『require "fileutils"』が必要です。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。