ruby Dir类涉及的几个函数

Dir[pattern] Dir.glob(pattern) Dir.glob(pattern) {|file| ...} Dir.glob(pattern[, flags]) ((<ruby 1.7 特性>)) Dir.glob(pattern[, flags]) {|file| ...} ((<ruby 1.7 特性>))

以字符串数组的形式返回通配符匹配结果。若指定了块的话,将以匹配成功的文件为参数,依次计算该块,然后返回nil。

可以一次指定多个pattern,此时需要使用空白(space,tab,换行)或"\0"将它们分割开来。

p Dir.glob("f* b*")
=> ["foo", "bar"]

可用的通配符如下。

  • *

    匹配任何字符串,包括空字符串。

  • ?

    匹配任何一个字符。

  • [ ]

    只要匹配方括号中任何一个字符即可。若使用-则表示字符范围。若方括号中的首字符是^时,表示匹配^后的字符以外的任意字符。(在ksh或POSIX shell中可以使用!来代替^。)

  • { }

    表示依次与括号内的字符进行组合。例如,foo{a,b,c}将变为fooafoobfooc,然后再依次进行匹配。

    括号可以嵌套。例如,{foo,bar{foo,bar}}表示将依次与foobarfoobarbar进行匹配。

  • **/

    表示通配符*/重复出现0次以上,这将对目录进行再归式地搜索。例如,foo/**/bar表示将依次对foo/barfoo/*/barfoo/*/*/bar ... (此后无限延伸)进行匹配。

ruby 1.7 特性:可使用反斜线对通配符进行转义处理。(请注意,在双引号内的字符串中必须进行2层转义)另外,空白类字符将失去特殊意义(但"\0"依然有效)。若想进行与1.6版本相同的处理时,应使用String#chomp等将多余的空白去掉,或使用gsub(/[\t\n]/,"\0"])进行转换即可。

ruby 1.7 特性:可以为第2可选参数指定一个类似于File.fnmatch中所使用的标识。指定标识后就可改变匹配的运作情况。

Dir.chdir([path]) Dir.chdir([path]) {|path| ... } ((<ruby 1.7 特性>))

将当前目录改为path。若省略path时,则会调用环境变量HOMELOGDIR。若它们中包含设定值时,就将当前目录改为它们的值。

若当前目录变更成功就返回0,若失败则引发Errno::EXXX异常。

ruby 1.7 特性:若指定了块的话,则只会在块的执行过程中变更当前目录。这等价于

savedir = Dir.pwd
Dir.chdir(newdir)
begin
  ...
ensure
  Dir.chdir(savedir)
end

此时,带块方法的返回值就是块的执行结果。


转自:http://www.kuqin.com/rubycndocument/man/built-in-class/class_object_dir.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值