LoginSignup
1
0

More than 1 year has passed since last update.

【Ruby】ファイルのパスからファイル名とディレクトリを分割したい

Posted at

概要 

ファイルのパスからファイル名とディレクトリを分割する方法をメモ。

ファイル名のみ取得する場合

パスから一番後ろのスラッシュに続く要素を取得するには、File.basenameメソッドを使用します。
第1引数でファイル名を表す文字列を指定します。
第2引数でサフィックスを文字列で与えます。'.' という文字列を与えた場合、'' はワイルドカードとして働き '.' を含まない任意の文字列にマッチします。

p File.basename("ruby/ruby.c")          #=> "ruby.c"
p File.basename("ruby/ruby.c", ".c")    #=> "ruby"
p File.basename("ruby/ruby.c", ".*")    #=> "ruby"
p File.basename("ruby/ruby.exe", ".*")  #=> "ruby"
p File.basename("ruby/y.tab.c", ".*")   #=> "y.tab"

対象が存在するディレクトリのパスを取得する場合

対象が存在するディレクトリのパスを取得する場合(一番後ろのスラッシュより前の要素)を取得するには、File.dirnameメソッドを使用します。
第1引数でファイル名を表す文字列を指定します。
第2引数で末尾からいくつ取り除くかを指定します。

p File.dirname("dir/file.ext")    # => "dir"
p File.dirname("file.ext")        # => "."
File.dirname("/home/gumby/work/ruby.rb", 2) # => "/home/gumby"
File.dirname("/home/gumby/work/ruby.rb", 4) # => "/"

ファイル名と対象が存在するディレクトリのパスを分割して配列で取得する場合

ファイル名と対象が存在するディレクトリのパスを分割して配列で取得する場合File.splitメソッドを使用します。

[File.dirname(pathname), File.basename(pathname)]

と同じ結果となります。

File.split("/home/gumby/work/ruby.rb") # => ["/home/gumby/work", "ruby.rb"]

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0