2009年4月18日土曜日

コマンドプロンプトでファイルを探す

ファイル名でファイルを検索することがよくある。
特にコマンドプロンプトを使っているときにそういう場面に遭遇する。
その都度Explorerを開いて作業するのは不便なのでRubyで作ってみた。
locate.rb
#!ruby -Ku

def handle_file(names, name)
basename = File.basename(name)
found = false
names.each do |target|
if basename =~ target
found = true
break
end
end
puts name if found
end

def handle_dir(names, name)
handle_file(names, name + '/')
handle_all(names, name + '/*')
end

def handle_all(names, name)
Dir[name].each do |candidate|
if File.directory?(candidate)
basename = File.basename(candidate)
handle_dir(names, candidate) unless basename == '.' || basename == '..'
else
handle_file(names, candidate)
end
end
end

def locate(names)
names = names.map{|n| Regexp.new(n)}
handle_all(names, '.*')
handle_all(names, '*')
end

if $0 == __FILE__
locate(ARGV)
end

0 件のコメント:

コメントを投稿