如何从 Git LS-Files 中仅获取某些对象类型

问题描述 投票:0回答:1

我正在尝试看看我可能有哪些机会重构一些代码。 因此,我想了解如何在我的存储库中搜索要考虑的最长文件。 但是你如何使用

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 command-line-arguments ls file-type git-ls-files
1个回答
0
投票

这似乎工作得很好。

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”之类的条目。

© www.soinside.com 2019 - 2024. All rights reserved.