gpt4 book ai didi

bash - du : Follow symlinks if symlink points to outside directories, 否则不要遵循

转载 作者:行者123 更新时间:2023-11-29 09:45:28 33 4
gpt4 key购买 nike

我想知道是否有一些相当简单的 shell 咒语来计算目录的磁盘使用情况(使用 du 命令)但具有以下要求:指向目录内文件/子目录的符号链接(symbolic link)应该不遵循,但应该遵循到外部文件/子目录的符号链接(symbolic link)。或者我是否需要编写一些脚本来完成此操作。

最佳答案

除非我遗漏了您问题中的某些内容,否则 du 已经在指示遵循符号链接(symbolic link) (-L) 时这样做了。

我有两棵树:

tree1/:

├── dir1
│   └── file
├── dirA -> ../tree2/dirA
└── link1 -> dir1

tree2/:

.
└── dirA
└── file

两种情况下的文件大小均为 1MB。

现在在 tree1/ 上运行 du -shL:

$ du -shL tree1
2.0M tree1

当跟随符号链接(symbolic link)时,文件可以在 tree1/ 中被看到三次:

$ find tree1 -follow -type f
tree1/dirA/file
tree1/link1/file
tree1/dir1/file

它只占总数的两倍。即一次来自 tree1/ 并且一次从 tree2/dirA/ 链接进来(或者我从外部理解的意思/不是 tree1/的子目录)。

这似乎也有道理,因为作为同一棵树中的链接,它们实际上并不消耗额外的磁盘空间(超出符号链接(symbolic link)条目)。


我还把 tree1 扩大了一点:

.
├── dir1
│   └── file
├── dir2
│   └── file -> ../dir1/file
├── dirA -> ../tree2/dirA
└── link1 -> dir1

然后运行:

$ du -abcL .
1048576 ./dir2/file
1048636 ./dir2
1048576 ./dirA/file
1048636 ./dirA
60 ./link1
2097452 .
2097452 total

如您所见,链接仅计入 . 的总数/大小以及链接条目的大小(尽管我承认 60 让我感到困惑,但是,我会期望 4) 而不是(取消引用)它们指向的文件的内容。

这是您想要的还是足够接近?

关于bash - du : Follow symlinks if symlink points to outside directories, 否则不要遵循,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54169151/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com