我有一个文件目录,我想查找超过2行的文件列表。
我知道我可以使用wc -l来测试每个文件,但是如何将其包装在bash中呢?
抱歉新手问题,bash新手。
答案 0 :(得分:7)
您可以使用此find
命令:
find . -type f -exec bash -c '[[ $(wc -l < "$1") -gt 2 ]] && echo "$1"' _ '{}' \;
答案 1 :(得分:2)
使用xargs
和awk
:
$ 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进行解析,但仍然可以使用它。您只需提前检查您的文件名是否包含换行符(或其他奇怪的符号)。