ファイル名/フォルダ名の抽出など

puts '--- ファイル名を取り出す。一番後ろの"/"以降を返す。'
p File.basename("/home/user/bin/ruby")
p File.basename("/home/user/bin/ruby/file.rb")
p File.basename("/home/user/bin/ruby/file.rb", ".rb")        # 第2引数で取り除く部分指定
 
puts '--- ディレクトリ名を取り出す。一番後ろの"/"より前を返す。'
p File.dirname("/home/user/bin/ruby")
p File.dirname("ruby")
p File.dirname("/home/user/bin/ruby/file.rb")
 
puts '--- basenameが返す部分から、拡張子を取り出して返す。'
p File.extname("/home/user/bin/ruby")
p File.extname("/home/user/bin/ruby/file.rb")
p File.extname("data.dat")
 
puts '--- dirnameとbasenameに分割し、2要素の配列を返す'
p File.split("/home/user/bin/ruby")
p File.split("/home/user/bin/ruby")[1]
p File.split("/home/user/bin/ruby/file.rb")
p File.split("/home/user/bin/ruby/file.rb")[0]
p File.split("data.dat")
 
puts '--- joinはsplitの逆。dirnameとbasenamからpathを組み立てる'
dir_base = File.split("/home/user/bin/ruby")
p dir_base
p File.join(dir_base)
p File.join("/hoge", "hoge.txt")
 
puts '--- 相対パスを絶対パスに変更'
p Dir.pwd
p File.expand_path("../../../bin")
p File.expand_path("bin", "../local/")

ネタ元