【发布时间】:2014-03-02 11:30:55
【问题描述】:
Dir.glob 方法用于实现匹配特定模式的文件名,但其参数具有类 Unix 语法(例如,以特定方式使用 *、** 作为通配符等。 )。相反,我想使用 Ruby (Onigmo) 正则表达式来匹配模式来做同样的事情(使用它的通配符、量词、锚点、转义字符等)。最好的方法是什么?
想到的一种简单方法是使用Dir.glob 获取所有目录中所有现有文件的列表,并使用正则表达式过滤它们,但这看起来效率不高。或者,是吗?有没有更好的办法?
【问题讨论】:
-
对我来说看起来很高效。
-
@sawa
grep命令理解所有类型的正则表达式,它可以让你根据需要编写正则表达式。写下来然后运行%x(grep pattern)。做man grep并阅读手册。他们写得很好。 -
@sawa,也许他的意思是
find,而不是grep:一些find变体,如GNU 找到接受-regex选项:find /path/to/dir -regex #{pattern}(不能环绕反引号) -
@ArupRakshit,
grep通常匹配文件内容,而不是文件名。 -
@sawa 那就看看this