繁体   English   中英

在 git 存储库中找到 5 个最大的(按行数)文件

[英]find the 5 largest (by number of lines) files at git repository

我的目标:我想开始从事一个新的 OpenSource 项目。 项目链接: https://github.com/dry-python/returns/tree/master/returns首先,我需要了解我必须使用哪些文件?

任务:任务是按代码行数对文件进行排序,找到行数最多的 5 个文件。 我可以使用控制台中的什么命令来执行此操作?

我已经做了什么:

  1. 将存储库文件上传到我的本地计算机中名为“returns-master”的目录中
  2. 运行命令:
ls / returns-master | wc -l | sort -n | head -n 5

作为回应,我得到一个错误:

ls: returns-master: No such file or directory
17

首先查看 git 回购协议。 然后在磁盘上找到所需的文件:

find /path/to/your/copy/of/repo -type f | xargs wc -l | sort -gr | head -n6 | tail -n +2 | perl -lane 'print $F[-1]'

在这里, find将签出的 git 存储库中的文件列表传递给xargs ,后者将它们提供给wc -l ,后者计算行数。
sort -gr :按第一列(行数)反向排序。
head -n6 | tail -n +2 head -n6 | tail -n +2 :获取wc返回的前 6 个条目,其中包括total中的第一个条目,我们使用tail将其删除。
perl -lane 'print $F[-1]' :打印由空格分隔的最后一列(文件名)。

您需要一个支持** glob 的 shell。 我认为zsh默认情况下会这样做,在bash中你需要shopt -s globstar 您也可以尝试sort而不是gsort

wc -l **/*(.)| gsort -n

您可以添加| gtail -n 6 | gtail -n 6只获得前五名。

仅获取.zsh文件:

wc -l **/*.zsh | gsort -n

暂无
暂无

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

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