我正在尝试看看我可能有哪些机会重构一些代码。 因此,我想了解如何在我的存储库中搜索要考虑的最长文件。 但是你如何使用
git ls-files
来返回某个 filename
就像 java 文件 *.java
那样呢?
我还不理解文档。而且,我可以使用一些改写来理解这一点。 我尝试过运行
--format='*.java'
、--format=objecttype *.java
*.java
、grep java
等的变体。我有 git ls-files | grep java | xargs ls -l | sort -nrk5 | head -n 10
的其余代码,来自 “如何在 Git 存储库中找到 N 个最大的文件?”所以问答。
这似乎工作得很好。
git ls-files | grep ".*java" | xargs ls -alh | sort -rhk5 | head -n 10
我已将
-n
的实例替换为 -h
,这为您提供了良好的人类可读格式的文件大小。
-rw-r--r-- 1 joel staff 65K Nov 20 15:18 src/com/crawlmb/keyboard/CrawlKeyboardView.java
-rw-r--r-- 1 joel staff 17K Nov 20 15:18 src/com/crawlmb/ConfigEditor.java
-rw-r--r-- 1 joel staff 16K Nov 20 15:18 src/com/crawlmb/activity/PreferencesActivity.java
(skipped remaining entries)
我注意到,如果您正在搜索较小的模式(例如
.c
文件),请将 ".*c"
替换为 ".*\.c"
以获得更高的精度。否则,由于出现了“c”,我得到的结果包含“doc/Guidebook.txt”之类的条目。