我正在尝试查找所有文件都有 text: $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']
,我尝试使用grep -rl '$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']' .
,但后来发现[]
作为搜索模式具有特殊含义。那么搜索文本的正确命令是什么$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']
?
问问题
51607 次
3 回答
15
你是对的,[
是]
特殊字符。引用它们\
或fgrep
改为使用它们。后者是纯字符串搜索:
fgrep "\$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']" ...
您仍然需要引用$
,因为它会被bash
其他 shell 解释。
于 2013-08-14T09:13:51.243 回答
3
您可以使用 -F 或 --fixed-strings 指定要匹配的字符串列表。
grep -Frl "\$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']" /path/to/files
-F, --fixed-strings 将 PATTERN 解释为固定字符串的列表,由换行符分隔,其中任何一个都将被匹配。(-F 由 POSIX 指定。)
fgrep
已弃用,但仍可作为grep -F
.
于 2015-08-24T10:41:12.720 回答
1
正如 Maxim Yegorushkin 所说,您必须转义 $ 和 [ ] 字符。
grep -rl "\$GLOBALS\['TYPO3_CONF_VARS'\]\['SC_OPTIONS'\]" .
于 2013-08-14T09:18:34.180 回答