繁体   English   中英

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

[英]Bash — find a list of files with more than 3 lines

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

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

对不起新手问题,bash新手。

您可以使用此find命令:

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

使用xargsawk

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

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

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

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

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将输出行数和文件名。 如果您只想查看文件名,请用$ i替换wc -l $i $ i。

当然,我没有检查,如果每个条目都是一个文件。 您可以在检查行数之前执行此操作。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM