使用符号链接查找文件夹的磁盘使用情况

使用符号链接查找文件夹的磁盘使用情况

我正在 Debian 服务器上工作,我只能在没有 sudo 的情况下访问控制台。名为“应用程序”的主文件夹包含包含我拥有的所有项目的子文件夹。

但是,当我通过管理面板创建新项目时,文件夹名称是一个无意义的字符串,您可以通过创建指向新文件夹的符号链接来重命名它。

例如,应用程序文件夹是这样的:

applications/
    abuwryjbrb
    evharjqgxj
    MyCustomProjectName1
    MyCustomProjectName2

我想检查每个应用程序使用了多少空间。由于我在 Unix 方面没有太多经验,我用 google 搜索了一下,发现我可以用du -sh *.

然而,输出是这样的:

91M     abuwryjbrb
201M    evharjqgxj
0       MyCustomProjectName1
0       MyCustomProjectName2

结果,我要一一检查名称并查看哪个文件夹是哪个,这太耗时了。

有没有办法获得符号链接的磁盘使用情况的输出?

相反du -sh -L *,我不会得到原始文件夹和符号链接的重复文件夹,但得到如下混合输出:

91M     abuwryjbrb
201M    MyCustomProjectName1

其中一些文件夹具有原始名称,一些具有符号链接名称

答案1

您可以使用-L标志和du命令来使用符号链接。 du -sh -L *应该对你有帮助。

答案2

du -sh -l -- */

尾部斜杠使通配符匹配目录和目录的符号链接。对于目录的符号链接,该命令作用于目标。

-l(GNU 扩展如-h)禁用du的行为,即给定文件/目录的磁盘使用量仅计算一次。请注意,如果每个项目中存在硬链接,它也会影响报告的磁盘使用情况。

您的项目将列出两次,一次针对每个目录,一次针对其符号链接。如果有一种简单的方法来创建仅与您自己的名字匹配的通配符模式,您就可以避免这种情况。例如,如果您始终将自己的名字大写,而自动名称始终为小写,则可以使用

du -sh [[:upper:]]*/

或者,您可以使用

du -shHl -- *

这也列出了常规文件。该选项-H-D在 GNU 中du也称为-H标准选项)指示du取消引用命令行上传递的符号链接。不会遍历每个目录树内的符号链接(与 不同-L,这在这里不是一个好主意)。

在 zsh 中,您可以使用

du -shH -- *(@-/)

仅作用于目录的符号链接,或du -shH -- *(@)仅作用于符号链接,无论其目标如何。这次,我们可以省略-l,除非同一目录有多个符号链接。

在任何 shell 中(并且使用 GNU find),您可以使用

find . -maxdepth 1 -type l -xtype d -exec du -shH {} +

仅作用于目录的符号链接。

相关内容