列出包含与模式/字符串匹配的少于 N 行的文件

列出包含与模式/字符串匹配的少于 N 行的文件

编辑

我正在寻找一个同时使用 GREP 和 FIND 的命令来实现下面列出的条件。

每个日志文件都包含出现两次的字符串模式“226 传输完成”。在某些文件中,它只出现一次或为零。我需要捕获出现零次和一次的文件名列表。以下命令仅在文件中未找到搜索模式时才有效(即仅适用于计数“零”)。

find . -type f -name "*.log" ! -exec grep -q "226 Transfer complete." {} \; - print

我正在使用 grep 版本 (GNU grep) 2.20。我还需要在文本文件中捕获结果。

答案1

grep -lR '226 Transfer complete\.' --include='*.log'

答案2

您可以用于awk计算出现次数并在计数小于时打印文件名n

find . -type f -name \*.log -exec awk -vn=2 'BEGIN{c=0};
/PATTERN/{++c; if (c==n){exit}};END{if (c<n){print FILENAME}}' {} \;

一旦n(在本例中2)找到匹配项,计数就会停止。

相关内容