Ruby,使用反引号来grep文件扩展名和搜索字符串的文件内容

时间:2014-09-08 06:11:48

标签: ruby bash grep backticks

我正在尝试在其内容中找到包含“some string user input”的txt和html文件。

在命令行中,以下命令工作正常。

grep -ri --include \*.txt --include \*.html string .

但尝试将其编码为ruby程序时如下:

s = ARGV[0]
files = %x(grep -ri --include \*.txt --include \*.html #{s} .) 

这就是我运行程序的方式

  

$ ruby​​ app.rb string

它不起作用。

关于如何让它以这种方式运作的任何想法?

提前致谢

2 个答案:

答案 0 :(得分:1)

\在Ruby 中转义* ,不需要转义,因此传输到shell的文本为grep -ri --include *.txt --include *.html filename .。转义反斜杠以使shell保持原样:

files = %x(grep -ri --include \\*.txt --include \\*.html #{s} .) 

答案 1 :(得分:0)

#!/bin/env ruby
# encoding: utf-8
s = ARGV[0]
files = %x|grep -ri --include \*.txt --include \*.html #{s} .| 
puts files
你可以使用|代替