为什么这不显示隐藏的文件/文件夹?

为什么这不显示隐藏的文件/文件夹?

当我正在检查我的系统以du -sch ./*查找我可能无缘无故储存的无用大文件时,我发现了这个:

$ du -sch ./*
du: cannot read directory ‘./drbunsen/.gvfs’: Permission denied
du: cannot read directory ‘./drbunsen/.cache/dconf’: Permission denied
18G ./drbunsen
18G total

$ cd drbunsen/
$ du -sch ./*
601M ./Desktop
20K ./Documents
598M ./Downloads
4.0K ./flash
4.0K ./Music
8.0M ./Pictures
4.0K ./Public
4.0K ./Templates
4.0K ./Ubuntu One
8.0K ./Videos
11G ./VirtualBox VMs
6.9M ./workspace
12G total

如何使隐藏文件可见?du -sch ./.*给出的结果与 相同du -sch ./*

答案1

使用

du -sch .[!.]* * |sort -h

在您的主文件夹中。

或者,我最常用的命令是

ncdu

如有需要可轻松安装:

sudo apt-get install ncdu

答案2

我在 coreutils 邮件列表中也有同样的问题,因为我很难记住 @don.joey 的这个奇怪命令。还有 Bob Proulx建议的更好、更自然的命令: du -ahd1 | sort -h

如果您想列出当前目录中的所有文件,则可以使用“。”或根本不提供任何文件参数。此外,您可能还想使用 -d、--max-depth=N 选项。

尝试这个:

杜-hd1

答案3

.当您在目录中运行相同的命令时,计数中不包括以 开头的隐藏文件。例如,如果您安装了 Steam,则默认将游戏安装在该目录中~/.local/share/Steam/,并且它本身也安装在那里。

在 bash 下,您显然需要运行,du -sch .[!.]* *因为它无法正确扩展 glob .*。在zsh或其他 shell 下,du -sch * .*应该可以工作,因为.*应该扩展以包含当前目录中所有隐藏文件的列表。

答案4

我认为该du实用程序没有默认处理隐藏文件的命令行开关。

实现此目的的一种方法是使用该find实用程序查找您感兴趣的隐藏文件,然后du对每个条目运行该实用程序:

find ./ -maxdepth 1 -name '.*' -exec  du -hs {} \;

这为您提供了额外的灵活性,因为您可能只对目录感兴趣:

find ./ -maxdepth 1 -type d -name '.*' -exec  du -hs {} \;

或者您可能想要查看当前工作目录深处的所有隐藏文件和目录:

find ./ -name '.*' -exec  du -hs {} \;

对输出进行排序并不困难,因此您可以轻松识别可以帮助您节省磁盘空间的大型隐藏文件:

{ find ./ -maxdepth 1 -iname '.*' -exec  du -hs \{\} \; ;} | sort -h

相关内容