我试图find所有文件都有文本: $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']
,我试图使用grep -rl '$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']' .
,但后来发现[]
具有特殊的含义作为search模式。 那么search文本$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']
的正确命令是什么?
你是对的, [
和]
是特殊字符。 引用他们\
或使用fgrep
来代替。 后者是纯字符串搜索:
fgrep "\$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']" ...
你仍然需要引用$
因为它是由bash
和其他shell解释的。
正如Maxim Yegorushkin所说,你必须逃避$和[]字符。
grep -rl "\$GLOBALS\['TYPO3_CONF_VARS'\]\['SC_OPTIONS'\]" .
您可以使用-F或–fixed-strings来指定要匹配的字符串列表。
grep -Frl "\$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']" /path/to/files
从grep的手册页:
-F,–fixed-strings将PATTERN解释为由换行符分隔的固定字符串的列表,其中任何一个将被匹配。 (-F由POSIX指定)
fgrep
已弃用,但仍可作为grep -F
的替代选项。