【问题标题】:How to count files that contain at least two lines using find or xargs?如何使用 find 或 xargs 计算包含至少两行的文件?
【发布时间】:2021-01-09 00:58:09
【问题描述】:

我在一个目录中有几个.tsv 文件,我想对它们进行计数。目录dir 中的文件命名为file1.tsvfile2.tsvfile3tsv、...fileN.tsv。这是我到目前为止所做的,并且效果很好:

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

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

【问题讨论】:

    标签: find xargs


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2010-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-26
      • 2015-02-11
      • 1970-01-01
      • 2013-08-20
      • 2014-02-12
      相关资源
      最近更新 更多