0

我想在文件夹/项目中查找当前签出文件的大小,但忽略 git 目录。

就像是:

du . --ignore '.git'

有没有办法找到所有文件的大小而忽略 .git 文件夹中的内容?当我这样做时:

du . --exclude='.git'   
du . --exclude='./.git'  # or this

无论哪种方式,我得到:

du: --exclude=./.git: No such file or directory

我该怎么办?

4

2 回答 2

0

如果您du别无选择--exclude,您有两种简单的方法可以解决这个问题。第一个假设树中的文件和树中其他地方的文件之间没有硬链接.git,但这通常是正确的:

  • 运行du以获取总使用量
  • 自行运行du.git获取.git使用情况
  • 从第一个数中减去第二个数

第二种简单的方法是安装一个du具有--exclude.

还有第三种方法可以解决这个问题,这也很简单,但有点棘手:只需让.git开:

mv .git ../save-git
du ...
mv ../save-git .git

如果您使用此方法,请确保在两者之间没有尝试做任何类似于 Git 的事情。或者,创建.git一个指向 的符号链接../save-git,或者(如果你的 Git 足够新的话)一个包含重定向的纯文本文件。这两种方法都会弄乱总数,但只能占用一个磁盘块的空间(符号链接或纯文本直接占用一个磁盘块,除非操作系统/文件系统使用 inode 符号链接并且符号链接很短足以容纳in-inode)。

于 2019-08-01T22:56:50.823 回答
0

无论出于何种原因(可能是 Mac 实用程序的 BSD 历史),macOS 版本du不包括--exclude. 但是,至少从 10.14.x 开始,它确实包含了更不明显命名的-I选项,该选项忽略了提供的“掩码”中的项目——在这种情况下,“掩码”只是某种形式的另一个名称至少需要简单*?通配符的正则表达式。

跑步

 du -I .git .

给出大小层次结构,并且

 du -s -I .git .

给出总结。在这两种情况下,.git目录都会被忽略。

于 2019-08-02T12:03:25.970 回答