grep 中包含空文件:忽略它们或使用 arguments/piping 过滤掉它们效率更高吗?
Empty files being included in a grep: More efficient to just ignore them or use arguments/piping to filter them out?
我在服务器上设置了一个 tcsh 别名,该别名旨在处理托管在其上的域的 apache 日志,以便访问 wp-login.php 实例。在初始 grep 中排除 error.log 文件后,它将执行另一个 grep 以删除 0 个实例结果,然后将其通过 awk、sort 和 head 进行管道传输以进行更清晰的读取。
grep -c --exclude="/var/log/httpd/domains/*.error.log" wp-login.php /var/log/httpd/domains/*.log | grep -v :0 | awk -F'\'':'\'' '\''{print ,}'\'' | sort -nr | head -n 10
在第一个 grep 扫描的文件中,90% 是空的。从效率的角度来看,尝试解决 1k+ 个空文件是否更好(如果是,如何处理)或者处理它们所花费的时间相对较少,即使有超过一千个空日志文件被处理到一百个非空日志文件,收益微乎其微?
示例输出
# wpbf
12 /var/log/httpd/domains/DOMAIN1.TLD.log
10 /var/log/httpd/domains/DOMAIN2.TLD.log
8 /var/log/httpd/domains/DOMAIN3.TLD.log
7 /var/log/httpd/domains/DOMAIN4.TLD.log
6 /var/log/httpd/domains/DOMAIN5.TLD.log
6 /var/log/httpd/domains/DOMAIN6.TLD.log
6 /var/log/httpd/domains/DOMAIN7.TLD.log
6 /var/log/httpd/domains/DOMAIN8.TLD.log
6 /var/log/httpd/domains/DOMAIN9.TLD.log
6 /var/log/httpd/domains/DOMAIN10.TLD.log
尝试使用 find
和 -empty
选项来查找文件:
find /var/log/httpd/domains/ -maxdepth 1 -type f -name '*.log' '!' -name '*.error.log' '!' -empty |
xargs -d'\n' grep -Hc wp-login.php |
awk -F: ' != 0{print ,}' | sort -nr | head -n10
我在服务器上设置了一个 tcsh 别名,该别名旨在处理托管在其上的域的 apache 日志,以便访问 wp-login.php 实例。在初始 grep 中排除 error.log 文件后,它将执行另一个 grep 以删除 0 个实例结果,然后将其通过 awk、sort 和 head 进行管道传输以进行更清晰的读取。
grep -c --exclude="/var/log/httpd/domains/*.error.log" wp-login.php /var/log/httpd/domains/*.log | grep -v :0 | awk -F'\'':'\'' '\''{print ,}'\'' | sort -nr | head -n 10
在第一个 grep 扫描的文件中,90% 是空的。从效率的角度来看,尝试解决 1k+ 个空文件是否更好(如果是,如何处理)或者处理它们所花费的时间相对较少,即使有超过一千个空日志文件被处理到一百个非空日志文件,收益微乎其微?
示例输出
# wpbf
12 /var/log/httpd/domains/DOMAIN1.TLD.log
10 /var/log/httpd/domains/DOMAIN2.TLD.log
8 /var/log/httpd/domains/DOMAIN3.TLD.log
7 /var/log/httpd/domains/DOMAIN4.TLD.log
6 /var/log/httpd/domains/DOMAIN5.TLD.log
6 /var/log/httpd/domains/DOMAIN6.TLD.log
6 /var/log/httpd/domains/DOMAIN7.TLD.log
6 /var/log/httpd/domains/DOMAIN8.TLD.log
6 /var/log/httpd/domains/DOMAIN9.TLD.log
6 /var/log/httpd/domains/DOMAIN10.TLD.log
尝试使用 find
和 -empty
选项来查找文件:
find /var/log/httpd/domains/ -maxdepth 1 -type f -name '*.log' '!' -name '*.error.log' '!' -empty |
xargs -d'\n' grep -Hc wp-login.php |
awk -F: ' != 0{print ,}' | sort -nr | head -n10