我正在运行Linux CentOs,我试图使用此命令在我的wordpress安装中找到一些恶意代码:
grep -r 'php \$[a-zA-Z]*=.as.;' * |awk -F : '{print $1}'
当我点击进入时,这个过程就会挂起......我想仔细检查一下我的语法是否合适,我所要做的就是等待?
如何在搜索时获得某种反馈/发生的事情?
由于
答案 0 :(得分:1)
由于-r *
(递归地,所有文件/目录),它可能花时间?
考虑
find -type f -print0 | xargs -0trn10 grep -l 'php \$[a-zA-Z]*=.as.;'
将以(max)10批量处理文件,并按原样打印这些命令。
当然,像这样你可以通过一个简单的措施来优化它的效果,比如
find -type f -iname '*.php' -print0 | xargs -0trn10 grep -l 'php \$[a-zA-Z]*=.as.;'
有点相关:
你可以做一些类似的事情而不用寻找更小的树,最近的bash:
shopt -s globstar
grep -l 'pattern' **/*.php
答案 1 :(得分:1)
不是使用grep -r
递归grep,而是使用find
获取文件名列表,并一次将它们提供给grep
。这允许您在grep旁边添加其他命令,例如echo
s。例如,您可以创建一个名为is-it-malware.sh
的脚本,其中包含以下内容:
#!/bin/bash
if grep 'php \$[a-zA-Z]*=.as.;' "$1" >/dev/null
then
"!!! $1 is malware!!!"
else
" $1 is fine."
fi
并运行此命令:
find -type f -exec ./is-it-malware.sh '{}' ';'
在当前目录及其所有子目录中的每个文件上运行脚本(递归地)。