如何找到首行较长的文件?

如何找到首行较长的文件?

目前我的服务器有问题。一位托管多个网站的用户遭到黑客攻击,他的一些 php 文件被修改。现在我想获取受感染文件的列表,还想检查他是否清理了整个混乱。

受感染文件的共同点是第一行非常长。所以我想找到服务器上最小长度为 1000 个字符的每个 php 文件。

好吧,我可以使用“find”找到所有php文件,并使用“head -n 1”获取第一行,并使用“wc -m”计算字符数。

但我怎样才能将它们结合在一起呢?

答案1

find你可以用and来做到这一点awk

find . -type f -name '*.php' -size +1000c -exec awk '
    FNR > 1 {nextfile}
    length >= 1000 {print FILENAME}' {} +

awk脚本在每个文件的第一行之后跳到下一个文件。如果当前行长度 >= 1000 个字符,它将打印当前文件的文件名。

答案2

find您可以使用和尝试这个grep

寻找 。 -type f -name '*.php' -exec grep '.\{1000\}' {} +

相关内容