複数のディレクトリから同じ名前のファイルを集めるスクリプト
複数のディレクトリから同じ名前のファイルを一つのディレクトリに集めるスクリプトです。同じ名前だと上書きされてしまうので、ファイル名はディレクトリ名にしています。当然ながら拡張子はそのままです。
require 'fileutils' include FileUtils CURRENT_DIR = "/examplepath" COLLECT_FILE = "result.log" COLLECT_EXTENSION = File.extname(COLLECT_FILE) OUTPUT_DIR = "./logs" cd(CURRENT_DIR) begin mkdir(OUTPUT_DIR) rescue Errno::EEXIST print "overwrite?(y/n)>" exit if /^y/i !~ gets.chomp end Dir.glob("*/#{COLLECT_FILE}") do |file_path| dir_name = file_path.split("/")[-2] begin cp(file_path, "#{OUTPUT_DIR}/#{dir_name}.#{COLLECT_EXTENSION}", {:preserve => true}) rescue puts "#{file_path} couldn't copy." end end
必要に応じて、cdせずにコンソールのカレントディレクトリを使用する、関数化してパラメータにするなどしてください。
Have a Nice Script!
■参考
class Dir - Ruby 1.8.7 リファレンスマニュアル
http://doc.okkez.net/static/187/class/Dir.html
class File - Ruby 1.8.7 リファレンスマニュアル
http://doc.okkez.net/static/187/class/File.html
module FileUtils - Ruby 1.8.7 リファレンスマニュアル
http://doc.okkez.net/static/187/class/FileUtils.html#options