我试图找到所有文件都有文字$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']
,我尝试使用grep -rl '$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']' .
,但后来发现[]
具有特殊含义作为搜索模式。那么搜索文本$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']
的正确命令是什么?
答案 0 :(得分:13)
你是对的,[
和]
是特殊字符。引用\
或使用fgrep
代替。后者是纯字符串搜索:
fgrep "\$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']" ...
你仍然需要引用$
,因为它由bash
和其他shell解释。
答案 1 :(得分:2)
您可以使用-F或--fixed-strings指定要匹配的字符串列表。
grep -Frl "\$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']" /path/to/files
-F, - 固定字符串 将PATTERN解释为固定字符串列表,由换行符分隔,其中任何一个都要匹配。 (-F由POSIX指定。)
fgrep
已弃用,但仍可作为grep -F
的替代方案。
答案 2 :(得分:1)
正如马克西姆·叶戈鲁什金所说,你必须逃避$和[]字符。
grep -rl "\$GLOBALS\['TYPO3_CONF_VARS'\]\['SC_OPTIONS'\]" .