虽然你不能打开大小写不敏感,你可以写你所建议的目录搜索非常简洁.例如
filename = Dir.glob('foo.txt',File::FNM_CASEFOLD).first
if filename
# use filename here
else
# no matching file
end
备择方案
如果您关心使用FNM_CASEFOLD,那么有几个选择是:
filename = Dir.glob('*').find { |f| f.downcase == 'foo.txt' }
或者写一个方法来为给定的文件名构建一个不区分大小写的glob:
def ci_glob(filename)
glob = ''
filename.each_char do |c|
glob += c.downcase != c.upcase ? "[#{c.downcase}#{c.upcase}]" : c
end
glob
end
irb(main):024:0> ci_glob('foo.txt')
=> "[fF][oO][oO].[tT][xX][tT]"
然后你可以做:
filename = Dir.glob(ci_glob('foo.txt')).first