我想在文件夹/项目中查找当前签出文件的大小,但忽略 git 目录。
就像是:
du . --ignore '.git'
有没有办法找到所有文件的大小而忽略 .git 文件夹中的内容?当我这样做时:
du . --exclude='.git'
du . --exclude='./.git' # or this
无论哪种方式,我得到:
du: --exclude=./.git: No such file or directory
我该怎么办?
我想在文件夹/项目中查找当前签出文件的大小,但忽略 git 目录。
就像是:
du . --ignore '.git'
有没有办法找到所有文件的大小而忽略 .git 文件夹中的内容?当我这样做时:
du . --exclude='.git'
du . --exclude='./.git' # or this
无论哪种方式,我得到:
du: --exclude=./.git: No such file or directory
我该怎么办?
如果您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)。
无论出于何种原因(可能是 Mac 实用程序的 BSD 历史),macOS 版本du
不包括--exclude
. 但是,至少从 10.14.x 开始,它确实包含了更不明显命名的-I
选项,该选项忽略了提供的“掩码”中的项目——在这种情况下,“掩码”只是某种形式的另一个名称至少需要简单*
和?
通配符的正则表达式。
跑步
du -I .git .
给出大小层次结构,并且
du -s -I .git .
给出总结。在这两种情况下,.git
目录都会被忽略。