使用通配符在多个输入文件上调用Ruby脚本

slh*_*hck 0 ruby wildcard argument-passing command-line-arguments

我是Ruby的新手,需要编写一个可以处理多个输入文件的脚本.它应该像这样调用:

script.rb -i file*
Run Code Online (Sandbox Code Playgroud)

目录包含多个文件,例如file1.xml,file2.xml等等.只是一个简单的问题:这个通配符将如何扩展?我需要在我的脚本中编程吗?我正在使用OptionParserClass来解析命令行参数.

谢谢!

Ada*_*amH 5

通配符由命令行扩展,因此您将获得目录中每个文件的列表

C:\working>dir *.txt

05/10/2007 03:24 PM 46,101      config.txt
11/23/2004 11:54 AM 361           tips.txt
2 File(s) 46,462 bytes
Run Code Online (Sandbox Code Playgroud)

如果你这样做,

C:\working>ruby -e "puts ARGV" *.txt
config.txt
tips.txt
Run Code Online (Sandbox Code Playgroud)

Ruby将字符串*.txt转换为匹配的文件名,并将扩展的数组作为新参数传入.

使用optparse:

options = {}
OptionParser.new do |opts|
    opts.on("-i", Array, "List files") do |v|
      options[:files] = v
    end
  end.parse!

p options

C:\working> script.rb -i *.txt
Run Code Online (Sandbox Code Playgroud)

将打印出来:

["config.txt","tips.txt"]
Run Code Online (Sandbox Code Playgroud)

将导致选项[:files]成为字符串数组

http://www.ruby-forum.com/topic/111252