icon
icon

Rubyでファイル名を操作する方法を現役エンジニアが解説【初心者向け】

初心者向けにRubyでファイル名を操作する方法について現役エンジニアが解説しています。RubyのFILEクラスのメソッドを使うとファイル名やフォルダ名など取得することが出来ます。その他にも絶対パスや拡張子なども取得することが出来ます。ディレクトリやファイルを操作できる機能があれば便利なCGIなどが作成出来ます。

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

Rubyでファイル名を操作する方法について、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。

Rubyについてそもそもよく分からないという方は、Rubyとは何なのか解説した記事を読むとさらに理解が深まります。

 

なお本記事は、TechAcademyのオンラインブートキャンプ、Ruby講座の内容をもとに紹介しています。

田島悠介

今回は、Rubyに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

Rubyでファイル名を操作する方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

ファイル名を取得する方法

ファイル名を取得するには、Fileクラスのbasenameメソッドを使います。

引数にファイルへのパスを指定すると、ファイル名だけを返してくれます。

ファイル名を変更するにはFileクラスのrenameメソッドを使います。引数に、変更前のファイル名(パス)と、変更後のファイル名(パス)を指定すると、ファイル名が変更されます。

他にもFileUtilsモジュールのmvやmoveでも変更できます。引数はFile.renameと同じです。

 

ファイル名に関するその他の操作方法

ファイル名に関するその他の操作をいくつか紹介します。

  • File.extname:拡張子(.txt や .rb など) を取得できます。
  • File.dirname:フォルダ部分(パス)を取得できます。
  • File.split:各フォルダ名とファイル名を要素とした配列を取得できます。
  • File.absolute_path:絶対パスを取得できます。

 

[PR] 未経験からWebエンジニアを目指す方法とは

実際に書いてみよう

今回は事前に以下のようなフォルダとファイルを作成しておきました。
parent
-child
–taro.txt

 

bash
$ mkdir -p parent/child
$ touch parent/child/taro.txt
$ cd parent
$ pwd
/Users/hoge/parent

 

ファイル名を取得する方法

ますはFile.basenameでファイル名を取得します。

フォルダ名が除外されたtaro.txtを取得できました。

 

irb(main):001:0> File.basename("child/taro.txt")
=> "taro.txt"

 

ファイル名を変更する方法

次にFile.renameとFileUtils.mvでファイル名を変更してみます。ファイル名が変更されているかどうかは、File.exist?メソッドで確認できます。

taro.txt から hanako.txtに、続けてhanako.txtからkenji.rbに変更できています。

 

# File
irb(main):002:0> File.rename("child/taro.txt", "child/hanako.txt")
=> 0
irb(main):003:0> File.exist?("child/taro.txt")
=> false
irb(main):004:0> File.exist?("child/hanako.txt")
=> true
# FileUtils
irb(main):005:0> FileUtils.mv("child/hanako.txt", "child/kenji.rb")
=> 0
irb(main):006:0> File.exist?("child/hanako.txt")
=> false
irb(main):007:0> File.exist?("child/kenji.rb")
=> true

 

ファイル名に関するその他の操作方法

最後にファイル名に関するいくつかの操作を見てみます。

 

# 拡張子の取得
irb(main):008:0> File.extname("child/kenji.rb")
=> ".rb"
# フォルダ名の取得
irb(main):009:0> File.dirname("child/kenji.rb")
=> "child"
# パスに関する配列の取得
irb(main):010:0> File.split("child/kenji.rb")
=> ["child", "kenji.rb"]
# 絶対パスの取得
irb(main):011:0> File.absolute_path("child/kenji.rb")
=> "/Users/hoge/parent/child/kenji.rb"

 

執筆してくれたメンター

メンター稲員さん

フリーランスエンジニア。
大手SEからフリーランスのWeb系エンジニアにジョブチェンジ。

経験言語:Ruby、Rails、Python、C/C++、Java、Perl、HTML/CSS3、JavaScript、CoffeeScript,Node.js。
おうち大好きマンです。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

TechAcademyでは、初心者でも、Ruby on Railsを使ったプログラミングを習得できる、オンラインブートキャンプを開催しています。

また、現役エンジニアから学べる無料体験も実施しているので、ぜひ参加してみてください。