Simple gadget life programming diary

Simple gadget life の中の人によるプログラミングメモ

Rubyでファイルのコピーと拡張子の変更を行うプログラムを書いてみた。

あまり綺麗なやり方では無いと思いますが、こうすれば出来ますよというサンプルということで載せておきます。(バージョンは2.0.0)

ディレクトリを削除するにはディレクトリ内が空である必要がるので、先にファイルの削除をした上でディレクトリを削除。
その後コピー元からディレクトリごとコピーを行う。
拡張子の変更では正規表現を用いて変更。大文字、小文字関係なく変換するようにしています。

# -*- coding: utf-8 -*-

require "find" 
require "FileUtils" 

orgDir = "" #コピー元のディレクトリパスを指定
newDir = "" #コピー先のディレクトリパスを指定

#元ディレクトリ内のファイルとディレクトリを削除する
#ファイルの削除
Find.find(newDir){ |item| 
  if File::ftype(item) == 'file' 
    File.delete(item) 
  end 
} 
#ディレクトリの削除
Find.find(newDir){ |item| 
  if File::ftype(item) == 'directory' 
    FileUtils.rmdir(item) 
  end 
} 

#コピーの実施
FileUtils.copy_entry(orgDir,newDir); 

#拡張子の変更処理
#ここでは.txtファイルを.rb拡張子に変更
Find.find(newDir){ |item| 
  if File::ftype(item) == 'file' 
    if item =~ /.*\.txt/i 
      orgFile = item 
      newFile = orgFile.sub(/\.txt/i, ".rb") 
      File.rename(orgFile, newFile) 
    end 
  end 
}

一応githubにもあげておきます。