如何使用 find 或 xargs 计算至少包含两行的文件?

How to count files that contain at least two lines using find or xargs?

我在一个目录下有几个.tsv个文件,我想数一数。目录 dir 中的文件名为 file1.tsvfile2.tsvfile3tsv、...fileN.tsv。这是我到目前为止所做的并且工作正常:

find dir/file* -maxdepth 1 -type f | wc -l

但是我想申请另外一个条件;我只想计算至少包含 2 行的文件。考虑到将来 dir 中可能有数十万个文件,我如何使用 findxargs 命令有效地执行此操作?

那个效率不高,因为如果你有那么多文件,用那个 glob 调用 find 会导致 A​​rgument list too long 错误。你应该做的是:

find dir -name '*.tsv' -exec awk 'FNR == 2 { printf "."; nextfile }' {} + | wc -c

-exec[=22=之前放置额外的过滤器,例如-maxdepth-type等]. nextfile 语句被认为是 GNU 扩展,但现在所有主流 AWK 都有它。