如何查找包含特定文本的所有文件(包括反斜杠)?

时间:2016-10-05 15:46:55

标签: linux text grep find escaping

我以为我找到了How do I find all files containing specific text on Linux?的完美答案,所以我试了一下:

[Michael@devserver ~]$ grep -rnw '/var/www/concrete5.7.5.9/' -e "Concrete\Core\Block\BlockController"
[Michael@devserver ~]$

没有显示,但我知道应该有匹配。

[Michael@devserver ~]$ grep -rnw '/var/www/concrete5.7.5.9/concrete/blocks/html' -e "BlockController"
/var/www/concrete5.7.5.9/concrete/blocks/html/controller.php:5:use \Concrete\Core\Block\BlockController;
/var/www/concrete5.7.5.9/concrete/blocks/html/controller.php:7:class Controller extends BlockController
[Michael@devserver ~]$

我也试过逃避反斜杠无济于事。

[Michael@devserver ~]$ grep -rnw '/var/www/concrete5.7.5.9/' -e "Concrete\\Core\\Block\\BlockController"
[Michael@devserver ~]$

也试过单引号无济于事。

[Michael@devserver ~]$ grep -rnw '/var/www/concrete5.7.5.9/' -e 'Concrete\Core\Block\BlockController'
[Michael@devserver ~]$

如何查找包含特定文本的所有文件,其中包含Linux上的反斜杠?

3 个答案:

答案 0 :(得分:1)

使用单引号并转义反斜杠。

grep -rnw '/var/www/concrete5.7.5.9/' -e'Concrete\\Core\\Block\\BlockController'

答案 1 :(得分:0)

使用单引号。

grep -rnw '/var/www/concrete5.7.5.9/' -e 'Concrete\Core\Block\BlockController'

答案 2 :(得分:0)

Grep有一个选项-F来按字面解释模式而不是正则表达式。例如:

$ cat infile
use \Concrete\Core\Block\BlockController;
class Controller extends BlockController
$ grep 'Concrete\Core\Block\BlockController' infile     # No match!
$ grep -F 'Concrete\Core\Block\BlockController' infile  # Matches!
use \Concrete\Core\Block\BlockController;