Answers:
egrep -ir --include=*.{php,html,js} "(document.cookie|setcookie)" .
该r
标志意味着递归搜索(搜索子目录)。该i
标志表示不区分大小写。
如果只需要文件名,请添加l
(lowercase L
)标志:
egrep -lir --include=*.{php,html,js} "(document.cookie|setcookie)" .
grep -E ...
>egrep ...
grep: (error|fail): No such file or directory
在Ubuntu Desktop 16上出现错误;有什么提示吗?
--include=\*.{php,html,js}
尝试类似的东西 grep -r -n -i --include="*.html *.php *.js" searchstrinhere .
这-i
使得它不敏感
在.
你想从你的当前目录开始结束手段,这可以与任何目录取代。
在-r
目录树下递归地执行此操作
在-n
打印匹配项的行号。
将--include
让你添加的文件名,扩展名。接受通配符
有关更多信息,请参见:http : //www.gnu.org/software/grep/
-l
选项(仅打印匹配的文件名)代替-n
find
他们和grep
字符串:
这将在/ starting / path和grep中找到您3种类型的所有文件,以用于正则表达式'(document\.cookie|setcookie)'
。用反斜杠分成2行只是为了提高可读性...
find /starting/path -type f -name "*.php" -o -name "*.html" -o -name "*.js" | \
xargs egrep -i '(document\.cookie|setcookie)'
-exec grep -l 'sth' {} \;
# egrep -ir --include=file.foo "(foo|bar)" /dir
在〜500Gb weigth目录上最快超过5或8倍。
听起来像是一份完美的工作,grep
或者也许是肯定的
或这个奇妙的结构:
find . -type f \( -name *.php -o -name *.html -o -name *.js \) -exec grep "document.cookie\|setcookie" /dev/null {} \;
-exec grep...
优于我的xargs
方法,因为它不会阻塞文件名中的空格。
find . -type f -print0 | xargs -0 -I {} grep "search_string" {}
。当然,也可以添加其他选项。
仅包括另一种替代方法,您还可以使用以下方法:
find "/starting/path" -type f -regextype posix-extended -regex "^.*\.(php|html|js)$" -exec grep -EH '(document\.cookie|setcookie)' {} \;
哪里:
-regextype posix-extended
告诉find
我们期望什么样的正则表达式-regex "^.*\.(php|html|js)$"
告诉find
正则表达式本身文件名必须匹配-exec grep -EH '(document\.cookie|setcookie)' {} \;
告诉find
运行在-exec
选项和\;
它找到的每个文件之间指定的命令(及其选项和参数),其中{}
表示该命令中文件路径的位置。
而
E
选项告诉grep
使用扩展的正则表达式(以支持括号)和...H
选项告诉grep
比赛之前打印的文件路径。而且,鉴于此,如果您只想要文件路径,则可以使用:
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
您使用扩展的正则表达式。s/HI/BYE/
告诉sed
将“ HI”的每个“首次出现”(每行)替换为“ BYE”,然后...s/(^.*):.*$/\1/
告诉它来代替正则表达式(^.*):.*$
(意味着组 [东西由包围()
],包括一切 [ .*
从=一个或多个任意的字符的] 的行的开头 [ ^
]直到“第一‘:’随后任何直到”的的端行 [ $
])由替换后的正则表达式的第一组 [ \1
]组成。u
告诉sort删除重复项(sort -u
作为可选项)。...远非最优雅的方式。正如我所说,我的目的是扩大可能性的范围(并就可以使用的某些工具给出更完整的说明)。