Bash - 查找超过3行的文件列表

时间:2015-10-27 14:40:06

标签: linux bash shell

我有一个文件目录,我想查找超过2行的文件列表。

我知道我可以使用wc -l来测试每个文件,但是如何将其包装在bash中呢?

抱歉新手问题,bash新手。

3 个答案:

答案 0 :(得分:7)

您可以使用此find命令:

find . -type f -exec bash -c '[[ $(wc -l < "$1") -gt 2 ]] && echo "$1"' _ '{}' \;

答案 1 :(得分:2)

使用xargsawk

$ find . -type f | xargs wc -l | awk '$1 > 2'

如果您在git存储库中并且只想计算跟踪文件,则可以使用以下命令:

$ git ls-files | xargs wc -l | awk '$1 > 2'

答案 2 :(得分:0)

切换到文件所在的目录并使用以下命令:

for i in $(ls);
do
    if [ `grep -c '' $i` -gt 2 ]; then 
        echo `wc -l $i`;
    fi;
done

当然,这也可以作为一行语句;)

这一行迭代每个文件并在其上使用grep来获得纯行数。 wc -l也获取计数,但结果包括文件名...我不知道,如果你也可以使用该值进行比较......但是没关系:如果行数量更大2 (-gt 2),然后wc -l $ i将输出行数和文件名。如果您只想查看文件名,请将wc -l $i替换为$ i。

当然,我没有检查,如果每个条目都是一个文件。你可以在检查行数之前这样做。

更新:虽然不建议使用ls进行解析,但仍然可以使用它。您只需提前检查您的文件名是否包含换行符(或其他奇怪的符号)。