在使用Ruby执行命令行时,如何逃避垂直条?

tex*_*uce 8 ruby windows cmd

我在Windows中有这个命令行输入:

dir /b | ruby -ne 'f=$_.chomp;File.read(f).each_line{|line| print f if line =~ /helloworld/};'
Run Code Online (Sandbox Code Playgroud)

这一行是为了查找当前目录下的所有文件helloworld.(我知道有很多其他方法可以做到这一点,但帖子并没有关注那个)

我的问题是:

这条线给出了错误说法line is not a valid command.然后我|在Ruby中意识到块变量的支撑是cmd中的管道符号.我试图将整行改为双引号并逃避| 签字但没有成功.如何逃离垂直条|?

请不要回答其他方法来执行任务,例如使用其他工具,如grep,find,sed或awk,或将块更改为for循环.

Gor*_*McD 11

我发现这个microsoft.com页面上有关于管道和特殊字符的说明:

和号(&),管道(|)和括号()是特殊字符,当您将它们作为参数传递时,必须以转义字符(^)或引号开头.