Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

RubyではFileUtilsモジュールを利用することで、ファイル操作(コピー・移動・削除など)を簡単に行えるようになります。

本記事では、Rubyでのファイル操作方法を知りたい開発者向けに、FileUtilsの使い方についてサンプルコードを掲載しながら紹介していきます。

RubyのFileUtilsとは


FileUtilsは、Rubyのデフォルト機能として提供されている基本的なファイル操作を集めたモジュールです。

組み込みモジュール

FileUtilsを利用したい場合、Rubyの「require ‘fileutils’」でライブラリを読み込む必要があります。

FileUtilsはモジュールとして提供されていることから、インスタンス化することなく利用することが出来ます。

FileUtilsで頻繁に利用されるメソッド

FileUtilsには数多くのメソッドが用意されていますが、なかでも「コピー」「移動」「削除」処理は必ず把握しておきたい頻出処理です。

FileUtils頻出メソッド
  • コピー: cp
  • 移動: mv
  • 削除: rm

cpメソッドでファイルをコピーする


cpメソッドを利用すると、既存ファイルを指定したパスにコピーすることが可能です。

指定した「ファイル」をコピーする「cp」メソッドと、指定したフォルダをコピーする「cp_r」メソッドが利用出来ます。

基本構文

「cp」メソッドと「cp_r」メソッドは下記のように記述します。

cp(src, dist[, options])
cp_r(src, dist[, options])

srcに指定したファイルをdistに指定したパスにコピーします。

srcには配列で複数ファイルを指定することも可能です。

ポテパンダの一言メモ

今回は基本的な使い方をご紹介するため、第3引数のオプションについては省略させて頂きます。

1つのファイルをコピーする

srcに存在する1つのファイルを指定して、distに指定したパスにコピーしてみましょう。

「tree」コマンドで現在のフォルダ配下を表示

$tree
.
├── files
└── sample.rb
ポテパンダの一言メモ

treeコマンドはMacの標準機能では利用出来ないため、Homebrewなどでインストールする必要があります。

下記の記述で「sample.rb」を「files」配下にコピーします。

require 'fileutils'
FileUtils.cp('sample.rb', 'files')

実行結果

$tree
.
├── files
│   └── sample.rb
└── sample.rb

指定したフォルダにファイルがコピーされています。

ポテパンダの一言メモ

コピー元に指定したファイルが存在しない場合エラーが出力されます。

複数ファイルをコピーする

srcに複数ファイルを指定する場合、配列で指定する必要があります。

まずはtreeコマンドで現在のフォルダ配下を確認します。

$tree
.
├── files
├── sample.rb
├── sample2.rb
└── sample3.rb

配列に指定したファイルを全て「files」フォルダにコピーします。

require 'fileutils'

FileUtils.cp(['sample.rb', 'sample2.rb', 'sample3.rb'], 'files')

実行結果

$tree          
.
├── files
│   ├── sample.rb
│   ├── sample2.rb
│   └── sample3.rb
├── sample.rb
├── sample2.rb
└── sample3.rb

指定したフォルダを全てコピーする

「cp_r」メソッドでは、srcに指定したフォルダ(配下フォルダ・ファイル含む)をdistに指定したパスにコピーします。

treeコマンドでフォルダ配下を確認しておきます。

$tree
.
├── files
├── origin
│   ├── sub
│   │   └── test3.rb
│   ├── test1.rb
│   └── text2.rb
└── sample.rb

「cp_r」メソッドで「origin」フォルダの内容を「files」配下にコピーします。

require 'fileutils'

FileUtils.cp_r('origin', 'files')

実行結果

$tree          
.
├── files
│   └── origin
│       ├── sub
│       │   └── test3.rb
│       ├── test1.rb
│       └── text2.rb
├── origin
│   ├── sub
│   │   └── test3.rb
│   ├── test1.rb
│   └── text2.rb
└── sample.rb

mvメソッドでファイルを移動する


mvメソッドでは、srcに指定したファイルをdistに移動させることが出来ます。

基本構文

基本的な記述方法はcpメソッドと同じです。

mv(src, dist[, options])

srcに移動させたいファイルを指定し、distで指定したフォルダに移動させます。

1つのファイルを移動させる

まずはいつも通りtreeコマンドを実行しておきます。

$tree
.
├── files
└── sample.rb

「sample.rb」ファイルを「files」フォルダに移動させます。

require 'fileutils'

FileUtils.mv('sample.rb', 'files')

実行結果

$tree
.
└── files
    └── sample.rb

複数ファイルを移動

複数ファイルを指定する場合、cpメソッド同様配列で指定します。

treeコマンドでフォルダを確認

$tree
.
├── files
├── sample.rb
├── sample2.rb
└── sample3.rb

配列で指定した複数のファイルを「files」フォルダに移動させる

require 'fileutils'

FileUtils.mv(['sample.rb', 'sample2.rb', 'sample3.rb'], 'files')

実行結果

$tree
.
└── files
    ├── sample.rb
    ├── sample2.rb
    └── sample3.rb

ファイル名を変更する

mvメソッドでファイル名を変更するというような利用方法も可能です。

treeコマンドでフォルダを確認

$tree
.
├── files
└── sample.rb

「sample.rb」を「test.rb」に変更してみましょう。

require 'fileutils'

FileUtils.mv('sample.rb', 'test.rb')

実行結果

$tree          
.
├── files
└── test.rb

rmメソッドでファイルを削除する


rmメソッドでは引数に指定したファイルを削除することが可能です。

「rm_r」メソッドを利用することで、指定したフォルダを再帰的に削除することも出来ます。

基本構文

ファイル削除関連の各種メソッドでは、引数に削除対象を指定して実行します。

FileUtils.rm(list)
FileUtils.rm_r(list)

listには削除したいファイルを1つだけ指定するのはもちろん、複数ファイルを配列で指定することも可能です。

ファイルを指定して削除

まずは現在のフォルダ配下を確認します。

$ls            
files		sample.rb	test.rb

サンプルとして「test.rb」ファイルを指定して削除してみましょう。

require 'fileutils'

FileUtils.rm('test.rb')

実行結果

$ruby sample.rb
$ls            
files		sample.rb
ポテパンダの一言メモ

削除対象のファイルがロック(読み取り専用)状態の場合は削除出来ません。

複数ファイルを配列指定で削除

配列指定で複数ファイルの削除も確認していきます。

$ls
files		sample.rb	test1.rb	test2.rb	test3.rb

「test2.rb」と「test3.rb」のファイルを指定して削除してみましょう。

require 'fileutils'

FileUtils.rm(['test2.rb', 'test3.rb'])

実行結果

$ruby sample.rb
$ls
files		sample.rb	test1.rb

フォルダ指定で削除

「rm_r」メソッドを使用したフォルダ指定での削除処理も確認していきます。

$tree
.
├── files
│   ├── sub
│   │   └── test3.txt
│   ├── test1.txt
│   └── test2.txt
└── sample.rb

「rm_r」メソッドに「files」フォルダを指定し実行してみます。

require 'fileutils'

FileUtils.rm_r('files')

実行結果

$ruby sample.rb
$tree          
.
└── sample.rb

削除対象として指定したフォルダを、格納されたファイルも含めて削除することが出来ました。

さいごに: FileUtilsモジュールを利用してRubyでのファイル操作に挑戦してみよう


本記事では、Rubyの標準モジュールとして提供されているFileUtilsの使い方について紹介してきました。

今回ご紹介した内容は、FileUtilsモジュールの中でも頻繁に利用されるコピー(cp)・移動(mv)・削除(rm)のみで、まだまだ便利なメソッドがたくさん提供されています。

公式ドキュメントに各メソッドの利用方法が解説されていますので、合わせてご参照ください。

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。