【Ruby入門】ディレクトリ(フォルダ)の作成、削除
  • facebookページ
  • twitterページ
  • 2017.12.11

    【Ruby入門】ディレクトリ(フォルダ)の作成、削除

    前記事「【Ruby入門】ファイルの移動、コピー、削除」では、ファイルの操作を解説しました。

    今度はフォルダの操作を解説します。

    単純にフォルダの操作だけでは面白くないので、前記事と本記事を合わせて、現場でよく使う技術を解説します。

    今までどちらかというと技術ごとのピンポイントの解説となりましたが、それらを連続して一連の流れを作ってみます。

    本解説を通じて、点の理解がつながって線の理解になることを願ってやみません。

    ※本解説は、UnixやMacの表記にならって進めます。
    ※Windowsをお使いの方は「/」を「¥」に置き換えてください。

    フォルダ(ディレクトリ)の簡単な解説

    超簡単に、前提となる知識を整理しておきましょう。

    フォルダとは、ファイルやフォルダを格納するものです。

    フォルダの中には、ファイルやフォルダが混在できるのはご存知のとおりです。

    前記事では「フォルダ」という用語で解説しましたが、これではどうしても理解が頭打ちになることがあります。

    「フォルダ」といってしまうと画面上のアイコンや、文具でいう実物のフォルダからくる入れ物のイメージが理解をさまたげるのです。

    フォルダはファイルシステム的にいうと正しくはディレクトリで、ディレクトリを理解するためには階層構造のイメージを持たないといけません。

    なぜなら、上の階層、下の階層を行ったり来たり、といった操作を頻繁に行うからです。

    よってこれ以降、ディレクトリという用語で解説を進めます。

    カレントディレクトリという考え方

    「では、ディレクトリの中身を表示してください」

    いきなりこういわれれば、困りますよね。

    それもそのはず、ディレクトリはたくさんあるので、どこの中身かわかりません。

    では、今どこのフォルダにフォーカスが当たっているのか(つまり操作の拠点は今どこか?、もっと簡単にいうと今どこにいるのか)を表現する言葉として、カレントディレクトリ(current directory)を覚えておきましょう。

    上図で例えれば、カレントディレクトリがchild1なら、ディレクトリの中身はといわれればsample3.txtとなり、parentがカレントディレクトリなら中身はchild1,child2,sample1.txt,sample2.txtとなります。

    parentディレクトリを一番頂点とすれば、parentをルートディレクトリと呼びます。

    相対パスと絶対パス

    parentからみたsample4.txtを表現するとこうなります。

    このように、ルートディレクトリからみて、ディレクトリを「/」で区切って表現したものを絶対パスといいます。

    一方、sample3.txtからみたsample4.txtはこうなります。

    「..」は1つ上の階層、「.」はその直下という意味です。つまりsample3.txtがいる階層から、

     

    • ひとつ上がる(parent)
    • parent直下のchild2
    • その中のsample4.txt

     

    という意味です。つまりどこか特定のディレクトリやファイルから、目的の場所までの通り道の表現方法を相対パスといいます。

    絶対、相対にかかわらず、目的とするファイルやディレクトリまでの表現をパスといいます。

    ディレクトリの作成

    いよいよ、Rubyによるディレクトリの操作です。

    まずは作成から。

    作成はDirクラスのmkdirメソッドを使います。

    たったこれだけです。

    パス指定をしていないので、カレントディレクトリの直下にbackフォルダができましたが、もちろんパス指定は可能です。

    ディレクトリの削除

    ディレクトリの削除は

    を使います。

    カレントディレクトリ直下のbackフォルダを削除しましょう。

    ただし、backの中身が空である必要があります。

    中に何かファイルがあるとこういうエラーが返ります。

    これを防ぐために、前記事「【Ruby入門】ファイルの移動、コピー、削除」で出ていたfileutilsを使います。

    rm_rでディレクトリを指定すると、その中身はおろかディレクトリごと削除してくれます。

    挑戦!ログファイルの移動

    ファイルの一連の流れを組んでみる

    今まで学んだことを活かして、以下のようなシーンを想定しましょう。

    特定のフォルダに、日付をファイル名としたログファイル(例えば20171130.log)が多数あるとします。

    月が変わって2017年12月になったので、前月の年月(201711)でフォルダ名を作り、そこへ前月分を移します。

    先頭1〜6文字が201711のものが前月のログファイルとします。

    ただし、移動するときは前の月(つまり2017年11月分)と当月分(2017年12月分)が混在しているとします。

    ちょっと難しいですが、やってみましょう。

    これで、カレントディレクトリ内の前月のログだけを前月のディレクトリに移すことができました。

    解説

    1行だけのコメントなら、行頭に#を書きます。複数行を一気にコメントにする場合は、=beginと=endで囲います。

    d.prev_month.strftimeは、d.prev_monthで前月取得、.strftimeでそれをYYYYmm形式へ変換するという作業を一気に書いています。

    あとは、今までの解説で十分理解できるはずです。

    まとめ

    本記事では、今までの復習+ログファイル移動というテーマを実践しました。

    今までの知識だけでも結構なことができること、お気づきでしょうか?

    さらにいろんな手を加えて、遊んで、理解してみてくださいね!


    他のRuby入門記事はこちら

    【Ruby入門】Rubyとは何か?学習方法や将来性まで考えました!

    【Ruby入門】Ruby on Railsをやってみよう!

    【Ruby入門】環境構築(Mac/Win)

    【Ruby入門】nokogiriでスクレイピング

    【Ruby入門】データベース

    【Ruby入門】gemとライブラリ

    【Ruby入門】エラーと例外処理

    【Ruby入門】モジュール(module)とMix-in

    【Ruby入門】Procクラスとラムダ(lambda)

    【Ruby入門】ブロック

    【Ruby入門】メソッド

    【Ruby入門】クラスをコーディング(2) オブジェクト指向

    【Ruby入門】クラスをコーディング(1) classを作る

    【Ruby入門】クラスの継承、オーバーライド

    【Ruby入門】クラスとオブジェクト

    【Ruby入門】ディレクトリ(フォルダ)の作成、削除

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

    【Ruby入門】入力と出力

    【Ruby入門】Rubyの正規表現

    【Ruby入門】正規表現で置換する

    【Ruby入門】正規表現とは何か?

    【Ruby入門】文字列の結合などの操作

    【Ruby入門】CSVの基本と操作

    【Ruby入門】JSONの基本と操作

    【Ruby入門】乱数(Random)などの数値計算用クラスや端数処理

    【Ruby入門】日付の基本と操作(Time, Date)

    【Ruby入門】数値の数え上げ「upto」と四捨五入

    【Ruby入門】文字列の標準ライブラリnkfとヒアドキュメント

    【Ruby入門】数値の基本とメソッド (timesメソッド他)

    【Ruby入門】ハッシュ(hash)をeachで取り出す!その他ハッシュの応用に

    【Ruby入門】ハッシュ(hash)とシンボルの基本

    【Ruby入門】文字列の基本と表示メソッド

    【Ruby入門】Rubyの繰り返しを極める!様々な繰り返しのバリエーション

    【Ruby入門】最初はこれだけ!まずは手を動かしたい人のRuby入門

    【Ruby入門】ifとelseについて

    【Ruby入門】配列と操作(基本編)

    【Ruby入門】eachメソッドの使い方と応用例


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

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

    ポテパンフリーランス

    ポテパンフリーランス

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

    ポテパンキャリア

    ポテパンキャリア

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

    ポテパンキャンプ

    ポテパンキャンプ

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



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

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

    この記事をシェア

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

    関連ワード

    pickup









    ABOUT US

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

    READ MORE