繁体   English   中英

在当前目录中查找已签出代码的大小

[英]Find size of checked-out code in current 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以获取总使用量
  • .git本身上运行du以获取.git用法
  • 从第一个数字中减去第二个数字

第二种简单方法是安装确实具有--excludedu版本。

有第三种方法可以解决此问题,这也很容易,但也有些棘手:只需将.git移开即可:

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

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

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

跑步

 du -I .git .

给出大小层次结构,并且

 du -s -I .git .

给出摘要。 在这两种情况下,都会忽略.git目录。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM