Linux - 计算超过 n 行的文件数
Linux - Count in the number of files that have more than a n lines
如何计算目录下(包括其子目录下的文件)超过n行的文件数?
我正在查看 find
,因为它允许在目录树中进行递归搜索
一个简单的例子是管道查找:
#! /bin/bash
n=4
find . -type f | \
while read -r file; do
[[ $(wc -l < $file) -lt $n ]] || echo $file;
done
您可以将输出添加到数组中并根据需要对其进行格式化。
您可以在每个文件上使用 find
到 运行 wc
。将输出通过管道传输到 head
以删除“总计”行并通过 awk 过滤掉小文件。
find . -type f -exec wc -l {} + \
| head -n-1 \
| awk -v n=40000 '(>n){print}'
您可以使用 find -exec 到 运行 wc -l,然后将输出通过管道传输到 awk 以处理条目,因此:
find . -type f -exec wc -l '{}' \; | awk -v cnt="11" '>cnt { print }'
运行 wc -l 在找到的每个文件上,然后使用 awk 并将“n”值作为变量 cnt 传递。然后将第一个 space 分隔字段与每行的 cnt 进行比较(在本例中为 11),然后如果它更大,则打印该行。
统计超过100行的文件数
$ find path/to/dir -type f -exec wc -l {} + | awk '>100{c++} END{print c?c-1:c}'
用您的号码替换 100。
如何计算目录下(包括其子目录下的文件)超过n行的文件数?
我正在查看 find
,因为它允许在目录树中进行递归搜索
一个简单的例子是管道查找:
#! /bin/bash
n=4
find . -type f | \
while read -r file; do
[[ $(wc -l < $file) -lt $n ]] || echo $file;
done
您可以将输出添加到数组中并根据需要对其进行格式化。
您可以在每个文件上使用 find
到 运行 wc
。将输出通过管道传输到 head
以删除“总计”行并通过 awk 过滤掉小文件。
find . -type f -exec wc -l {} + \
| head -n-1 \
| awk -v n=40000 '(>n){print}'
您可以使用 find -exec 到 运行 wc -l,然后将输出通过管道传输到 awk 以处理条目,因此:
find . -type f -exec wc -l '{}' \; | awk -v cnt="11" '>cnt { print }'
运行 wc -l 在找到的每个文件上,然后使用 awk 并将“n”值作为变量 cnt 传递。然后将第一个 space 分隔字段与每行的 cnt 进行比较(在本例中为 11),然后如果它更大,则打印该行。
统计超过100行的文件数
$ find path/to/dir -type f -exec wc -l {} + | awk '>100{c++} END{print c?c-1:c}'
用您的号码替换 100。