【Ruby入門】ファイルの移動、コピー、削除
  • facebookページ
  • twitterページ
  • 2017.12.07

    【Ruby入門】ファイルの移動、コピー、削除

    前記事「【Ruby入門】入力と出力」では、標準入出力やファイルへの出力を解説しました。

    本記事では、ファイルやフォルダ(注1)の操作を解説します。

    ファイルの操作、つまりファイルの作成や移動、コピー、削除を解説します。

    本記事を十分理解できれば、複雑なファイルやフォルダの操作をコマンドひとつでできるようになったり、さらにはサーバー側のバッチ処理(注2)も実装可能ですよ!

    (注1)WindowsやMacではフォルダと呼びますが、Unix系ではディレクトリといいます。

    (注2)開始から終了まで人手を介することのない自動処理をバッチ処理といいます。

    ファイルの作成

    ファイルの作成は、すでに前記事「【Ruby入門】入力と出力」で解説しましたので、おさらいにサラッと見てみましょう。

    新規にファイルを作り、その中にabcdeという文字列を書き込みましょう。

    sample1.txtというファイル名でファイルができ、中身はabcdeという文字列が書き込まれます。

    ファイルの移動

    ファイルを移動してみましょう。

    現在の場所から「back」というフォルダに移動してみます。

    移動というよりは、Fileクラスのrenameメソッドを使い、移動先のパスを指定するというイメージです。

    実際に試す前に、現在のフォルダの中にbackというフォルダを作っておいてください。

    上記を実行後、backというフォルダにファイルが移動されているのがわかります。

    実際に実行するときには、以下を守る必要がありますので注意してください。

    例えば上記をsample.rbというファイル名で実行する場合です。

     

    • sample.rbと同じフォルダにsample1.txtが存在
    • sample.rbと同じフォルダにbackというフォルダが存在

     

    また、ライブラリfileutilsを使っても可能です。

    いずれの方法も、同じファイル名で移動しましたが、移動と同時にファイル名を変えることも可能です。

    こうすれば、移動と同時にファイル名がsample1_1.txtに変更されます。

    もうちょっとアレンジして、日付を含んだファイル名でコピーしてみましょう。

    これで、実行時が2017年11月29日ならば、backというフォルダに「sample1_20171129.txt」というファイル名で移動できます。

    ファイルのコピー

    ファイルのコピーも、fileutilsを使います。

    ここもちょっと工夫して、同じフォルダに2から10まで連番をつけてファイルをコピーしてみましょう。

    sample2.txtからsample10.txtが作成されます。

    特定のフォルダの中身をすべてコピー

    今までの解説は、すべて1本のファイルばかりでした。では特定のフォルダ以下すべてを選択するにはどうすればよいでしょうか?

    Dir.globを使うと、指定したフォルダ内のファイル名が、リスト形式で得られます。

    以下を実行してみてください。

    ソースファイルが存在しているフォルダのファイル名の一覧が表示されたはずです。

    フォルダを指定したい場合は、Dir.chdirでカレントディレクトリを変更します。’フォルダ’は、お使いの環境に合わせて変更してください。

    *.*で、ファイル名や拡張子ともにワイルドカードを指定していますので、指定したフォルダ以下すべてが対象となっています。

    もちろん、ファイル名や拡張子を指定して、対象を絞ることも可能です。

    早速、ソースファイルがあるフォルダ内部のファイルをすべてコピーしてみましょう。

    フォルダ内部のファイルがすべて、同一フォルダ内のbackフォルダにコピーされます。

    何も考えず、特定のフォルダから別のフォルダにコピーするだけなら、FileUtils.cp_rを使います。

    これで、ソースファイルの直下のすべてが、backフォルダへとコピーされます。

    またfileutilには、cp_rに限らず「_r」がついたコマンドがいくつかあります。これは再帰的という意味を持ちます。

    フォルダの中身全部、という意味になります。

    便利なので覚えておきましょう。

    ファイルの削除

    削除もfileutilsのFileUtils.rmを使います。

    まずは基本形です。

    フォルダ以下すべてを削除

    ソースファイルの存在しているフォルダの中身を、すべて削除します。

    上記をそのまま実行すると、ソースファイルのあるフォルダの中身、つまりソースファイルまで消えるのでご注意ください。

    特知恵のフォルダを指定したい場合は、コピーの節で出てきた「Dir.chdir」をDir.globの前で実行してフォルダを変更してください。

    まとめ

    本記事では、Rubyによるファイルの操作について解説しました。

    本記事でふれたfileutilsはもっとたくさんの機能を持っています。興味のある方はぜひ深掘りしてみてくださいね!


    ポテパンが提供するサービスについて

    本メディア「ポテパンスタイル」を運営する株式会社ポテパンは、エンジニアキャリア領域で複数サービスを提供しています。

    ポテパンフリーランス

    ポテパンフリーランス

    フリーランスエンジニアの方に高単価案件をご紹介しております。弊社ではフリーランス案件を常時300件ほど保有しており、その中からあなたに適した案件をご案内いたします。また、これから独立してフリーランスになる方の無料個別相談も承っております。フリーランスになった後の案件獲得方法やお金面(税金や保険など)についてお答えいたします!

    ポテパンキャリア

    ポテパンキャリア

    エンジニア職専門の転職エージェントです。ポテパンキャリアでは、技術のわかるエージェントがあなたの転職をサポートします。エージェント自身がエンジニアなので、あなたと同じ目線で仕事内容や今後のキャリアについて一緒に考えることができます。

    ポテパンキャンプ

    ポテパンキャンプ

    ポテパンキャンプでは、RubyにてゼロからオリジナルのECサイトを作り上げてる3ヶ月間の実践型カリキュラムを提供しております。すでに本スクールの卒業生は、エンジニア職として様々な企業様に就職しております。なお、本スクールは受講料10万円と他社スクールに比べ格安となっており、またポテパンからご紹介させていただいた企業へ就職が決まった場合は、全額キャッシュバックいたします。



    株式会社ポテパンは、企業とエンジニアの最適なマッチングを追求しています。気になるサービスがあれば、ぜひ覗いてみてください!

    ポテキャンバナー ポテキャリバナー

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア

    関連ワード

    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE