Ruby写的命令行小工具:where
作者:半瓶墨水 链接:http://www.2maomao.com/blog/ruby-tool-suites-where/
开始用Ruby来代替Perl写命令行脚本了,顺便写了个工具,呵呵,打算写一个系列的,慢慢来
这个小工具估计很多人都用过,叫做where,用来在系统的“PATH”环境变量指出的路径下搜索需要的文件
linux下面有个whereis具有同样的功能。
源码如下:
下载: where.rb
#What : a small tool to locate files in system "PATH" variable
#Author: Zhongfang Ren
#Date : 2007 Jan24
#Suite : ruby cookies by 2maomao.com
if (ARGV.size != 1 && ARGV.size != 2) || (ARGV.size == 2 && ARGV[0] != "-e")
puts " Usage:"
puts " ruby where.rb test.exe # normal search"
puts " ruby where.rb te*.bat # blurred search"
puts " ruby where.rb -e te*.cmd # regular expression search"
exit
elsif (ARGV.size == 1)
reg_str = ARGV[0].dup
reg_str.gsub!(/\./){ "\\." } # ! don't reorder this line with
reg_str.gsub!(/\*/){ ".*" } # the following 2 lines,
reg_str.gsub!(/\?/){ ".?" } # or, there will be a mess
elsif (ARGV.size == 2)
reg_str = ARGV[1].dup
end
path_str = ENV['PATH'].dup
paths = path_str.split(/;/)
paths<< ".\\" # add current directory
paths.each do |dir|
if FileTest.exist?(dir)
Dir.foreach(dir) { |x| puts dir + "\\" + x if x =~ /#{reg_str}/i}
end
end
#Author: Zhongfang Ren
#Date : 2007 Jan24
#Suite : ruby cookies by 2maomao.com
if (ARGV.size != 1 && ARGV.size != 2) || (ARGV.size == 2 && ARGV[0] != "-e")
puts " Usage:"
puts " ruby where.rb test.exe # normal search"
puts " ruby where.rb te*.bat # blurred search"
puts " ruby where.rb -e te*.cmd # regular expression search"
exit
elsif (ARGV.size == 1)
reg_str = ARGV[0].dup
reg_str.gsub!(/\./){ "\\." } # ! don't reorder this line with
reg_str.gsub!(/\*/){ ".*" } # the following 2 lines,
reg_str.gsub!(/\?/){ ".?" } # or, there will be a mess
elsif (ARGV.size == 2)
reg_str = ARGV[1].dup
end
path_str = ENV['PATH'].dup
paths = path_str.split(/;/)
paths<< ".\\" # add current directory
paths.each do |dir|
if FileTest.exist?(dir)
Dir.foreach(dir) { |x| puts dir + "\\" + x if x =~ /#{reg_str}/i}
end
end
使用方法:
ruby where.rb test.exe # 正常搜索
ruby where.rb te*.bat # 模糊搜索,支持*和?通配符
ruby where.rb -e te*.cmd # 正则表达式搜索
如果嫌麻烦,就用exert或者rubyscript2exe转成exe,这里有个已经转换好的文件(包括源码):
点击下载:http://www.2maomao.com/blog/wp-content/uploads/where.zip
标签:[tag]ruby[/tag]
1 条评论
发表评论
Additional comments powered by BackType



向你致敬~支持一下