如何找到第一行很长的文件?

use*_*063 3 find files wc

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

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

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

但是我怎么能把它结合在一起呢?

cas*_*cas 7

你可以只用findand做到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 个字符,它会打印当前文件的文件名。