首页 > 解决方案 > 在当前目录中查找签出代码的大小

问题描述

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

就像是:

du . --ignore '.git'

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

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

无论哪种方式,我得到:

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

我该怎么办?

标签: gitmacosdulinux-disk-free

解决方案


如果您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)。


推荐阅读