目前我的服务器有问题。一位托管大量网站的用户遭到黑客攻击,他的一些 php 文件被修改。现在我想获得受感染文件的列表,还想检查他是否清理了整个烂摊子。
受感染文件之间的共同点是第一行很长。所以我想在服务器上找到最小长度为 1000 个字符的每个 php 文件。
好吧,我可以用“find”找到所有的php文件,并用“head -n 1”获取第一行并用“wc -m”计算字符数。
但是我怎么能把它结合在一起呢?
你可以只用find
and做到awk
:
find . -type f -name '*.php' -size +1000c -exec awk '
FNR > 1 {nextfile}
length >= 1000 {print FILENAME}' {} +
Run Code Online (Sandbox Code Playgroud)
该awk
脚本的每个文件的第一行后跳到下一个文件。如果当前行长度 >= 1000 个字符,它会打印当前文件的文件名。