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

使用方法:
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]

一条评论 发表在“Ruby写的命令行小工具:where”上

  1. donnie说道:

    向你致敬~支持一下

留下回复