bash脚本 – 查找包含文本的文件
在bash中,我想为包含不区分大小写的string"document.cookie" | "setcookie"每个types为.php|.html|.js的文件返回文件名(和文件path) "document.cookie" | "setcookie" 
我该怎么做?
 egrep -ir --include=*.{php,html,js} "(document.cookie|setcookie)" . 
如果你只是想要文件名添加l标志(小写字母L):
 egrep -lir --include=*.{php,html,js} "(document.cookie|setcookie)" . 
 试试像grep -r -n -i --include="*.html *.php *.js" searchstrinhere . 
-i使得它不敏感
“。” 最后意味着你想从你的当前目录开始,这可以用任何目录来代替。
“-r”表示recursion地在目录树下执行此操作
“-n”打印匹配的行号。
“–include”可以让你添加文件名,扩展名。 接受通配符
欲了解更多信息,请访问: http : //www.gnu.org/software/grep/
  find他们和grep的string: 
 这将在'(document\.cookie|setcookie)'expression式'(document\.cookie|setcookie)' / path和grep中的3种types的所有文件。 为了便于阅读,用反斜杠分割两行 
 find /starting/path -type f -name "*.php" -o -name "*.html" -o -name "*.js" | \ xargs egrep -i '(document\.cookie|setcookie)' 
 听起来像是一个完美的工作grep或者可能ack 
或者这个美妙的build筑:
 find . -type f \( -name *.php -o -name *.html -o -name *.js \) -exec grep "document.cookie\|setcookie" /dev/null {} \; 
 find . -type f -name '*php' -o -name '*js' -o -name '*html' |\ xargs grep -liE 'document\.cookie|setcookie' 
只是包括一个替代scheme,你也可以使用这个:
 find "/starting/path" -type f -regextype posix-extended -regex "^.*\.(php|html|js)$" -exec grep -EH '(document\.cookie|setcookie)' {} \; 
哪里:
-   -regextype posix-extended告诉find什么样的正则expression式期望
-   -regex "^.*\.(php|html|js)$"find正则expression式本身的文件名必须匹配
- 
-exec grep -EH '(document\.cookie|setcookie)' {} \;告诉find运行命令(及其选项和参数)在-exec选项和\;之间指定\;对于每个find的文件,其中{}代表文件path在此命令中的位置。而 -   E选项告诉grep使用扩展正则expression式(支持括号)和…
-   H选项告诉grep在匹配之前打印文件path。
 
-   
而且,鉴于此,如果您只需要文件path,则可以使用:
 find "/starting/path" -type f -regextype posix-extended -regex "^.*\.(php|html|js)$" -exec grep -EH '(document\.cookie|setcookie)' {} \; | sed -r 's/(^.*):.*$/\1/' | sort -u 
哪里
-  |[pipe]发送find的输出到下一个命令之后(这是sed,然后sort)
-   r选项告诉sed使用扩展正则expression式。
-   s/HI/BYE/通知sed用“BYE”replace“HI”的每一个第一次出现(每行)并且…
-   s/(^.*):.*$/\1/告诉它replace正则expression式(^.*):.*$(表示一个组 [包含在()东西()包括所有东西 [.*=一个或多个任何字符]从开始行 [^]直到'第一个':'其次是任何东西,直到行 [$] 结束由被replace的正则expression式的第一组 [\1]。
-   u告诉sorting删除重复的条目(sort -u作为可选)。
…远离最优雅的方式。 正如我所说,我的意图是增加可能性的范围(也可以给你可以使用的一些工具更完整的解释)。