我想知道是否存在一些相当简单的shell命令来计算目录的磁盘使用情况(使用du
命令),但具有以下要求:不应遵循指向目录内文件/子目录的符号链接,但应与外部文件/子目录建立符号链接。还是我需要做一些脚本来完成这个任务。
答案 0 :(得分:3)
除非我错过了您的问题,否则当指示遵循符号链接(du
)时,-L
已经做到了。
我有两棵树:
tree1/
:
├── dir1
│ └── file
├── dirA -> ../tree2/dirA
└── link1 -> dir1
和tree2/
:
.
└── dirA
└── file
两种情况下文件的大小均为1MB。
现在在du -shL
上运行tree1/
:
$ du -shL tree1
2.0M tree1
遵循符号链接时,在tree1/
中可以看到该文件3次:
$ find tree1 -follow -type f
tree1/dirA/file
tree1/link1/file
tree1/dir1/file
它只算了两次。即一次来自tree1/
,一次来自tree2/dirA/
链接(或者我理解为您的意思,来自外部/不是tree1/
的子目录)。
这似乎也很有意义,因为它们是同一棵树中的链接,它们实际上并没有消耗额外的磁盘空间(除了symlink条目之外)。
我也将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
如您所见,链接仅计入链接条目大小的{/ {1}}的总数/大小中(即使我承认.
使我困惑,但我希望60
),而不是(指向的)文件所指向的内容。
这是您想要的还是足够接近的?