gpt4 book ai didi

ruby - 如何在 ruby​​ 中使用正则表达式选项运行 find shell 命令

转载 作者:太空宇宙 更新时间:2023-11-04 10:47:29 25 4
gpt4 key购买 nike

我需要在 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​​ 脚本中工作。似乎括号或管道有问题?

如有任何建议/帮助,我们将不胜感激。谢谢!

最佳答案

来自 stribizhev's comment 的推测是正确的:反引号中的命令文字与双引号中的字符串文字 (") 遵循相同的转义和替换/字符串插值规则。

单引号 (') 中的字符串文字按字面意义保留,因此下面的代码应该可以工作,而无需双重转义的麻烦:

#!/usr/bin/env ruby
command = 'find . -regex ".*\.\(rb\|erb\|js\)"'
files = `#{command}`
puts files

关于ruby - 如何在 ruby​​ 中使用正则表达式选项运行 find shell 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32445130/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com