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


139

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 ./*


du -hs .[^.]* *对于所有隐藏文件,排除 ...似乎缺少其他答案。
laggingreflex 2015年

Answers:


245

采用

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

在您的主文件夹中。

另外,我最常使用的命令是

ncdu

如果需要,易于安装:

sudo apt-get install ncdu

1
谢谢,你真是个天才。我不是bash的高手,[!.]会做什么?
Dr_Bunsen

10
@Dr_Bunsen:这是一个全局列表,列出了所有以单个开头的文件.。这是一个巧妙的窍门:如果您不知道出现什么问题,可以尝试运行echo .[!.]*。然后,外壳程序将扩展glob并将其传递到中echo,打印出结果文件列表。
Tikhon Jelvis

14
这样就无法列出名为like的 ..foo文件,并且可能导致名称以开头的文件出现问题-。如果arg列表太长,也可能会失败。du -ahd1不会有那些问题。
斯特凡Chazelas

与原始问题无关,但与日常使用有关:包括'c'开关以显示总计并重新排序选项可能会很有用,以使此命令更容易记住:du -cksh .[!.]* * |sort -h
Daddy32 '17

56

我在coreutils邮件列表中有相同的问题,因为我很难记住@ don.joey发出的奇怪命令。Bob Proulx 提出了更好,更自然的命令: du -ahd1 | sort -h

如果要列出当前目录中的所有文件,请使用“。”。或根本不给它任何文件参数。另外,您可能要使用-d,--max-depth = N选项。

尝试这个:

du -hd1


7
添加-a选项使其等效。
斯特凡Chazelas

6
这应该是公认的答案,因为它更容易记住和理解。
巴斯蒂安

8

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

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


好。那么bash显然存在问题,因为它似乎无法正确扩展.*。但是du -sch * .*在下做正确的事情zsh。在bash下,du -sch .*似乎很重要,.但不会扩展为单独显示文件。
dobey 2013年

对我来说,*也扩展为../*,因此du退出了我想查看其大小的目录!我不得不改用./.[^.]*。
2014年

是zsh和所有从Forsyth shell(当今主要是pdksh及其派生类)派生的shell,它们在做正确的事情,并且不会扩展。和这里。所有其他类似Bourne的外壳(bash,Bourne,AT&T ksh,破折号,yash ...)都可以。在中zsh,您可以使用du -sch -- *(D),而不是du -sch -- * .*
斯特凡Chazelas
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.