7

我正在尝试查找所有文件都有 text: $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS'],我尝试使用grep -rl '$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']' .,但后来发现[]作为搜索模式具有特殊含义。那么搜索文本的正确命令是什么$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']

4

3 回答 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

从 grep 的手册页:

-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 回答