【发布时间】:2015-09-07 19:42:30
【问题描述】:
我需要在 ruby 脚本中使用 regex 选项运行 Linux find 命令,但它似乎不起作用。该命令所做的只是查找扩展名为 rb 或 erb 或 js 的文件。我知道命令本身很好,因为我可以在命令提示符窗口中运行它。
这是我要运行的查找命令:
find . -regex ".*\.\(rb\|erb\|js\)"
这是我的 ruby 脚本的样子:
#!/usr/bin/env ruby
files = `find . -regex ".*\.\(rb\|erb\|js\)"`
puts files
我知道我可以使用 -name 选项而不是正则表达式,但看起来正则表达式应该可以工作。此外,我能够让命令 find . -regex ".*\.rb" 在我的 ruby 脚本中工作。似乎括号或管道有问题?
任何建议/帮助将不胜感激。谢谢!
【问题讨论】:
-
如果脚本中的元字符由 Ruby 处理,您可以尝试像
find . -regex ".*\.(rb|erb|js)"一样重新转义。也许在模式末尾添加$或\z也会有所帮助。