面试题答案
一键面试# 使用find命令查找所有log.txt文件,xargs以并行方式处理每个文件
total_count=$(find . -name "log.txt" -print0 | xargs -0 -P $(nproc) grep -o "error" | wc -l)
echo "关键字error出现的总次数: $total_count"
解释:
find . -name "log.txt" -print0
:在当前目录及其所有子目录中查找名为log.txt
的文件,并以null字符分隔输出。xargs -0 -P $(nproc)
:xargs
读取find
命令的输出,-0
选项表示输入是以null字符分隔的,-P $(nproc)
表示使用与CPU核心数相同的并行度来处理文件,$(nproc)
获取系统的CPU核心数。grep -o "error"
:在每个文件中查找关键字error
,-o
选项表示只输出匹配的关键字。wc -l
:统计匹配的关键字行数,即关键字出现的总次数。- 将总次数赋值给
total_count
变量,并输出结果。这样的处理方式可以有效利用系统资源,提高性能,避免资源耗尽。