问题描述
当我发现这一点时,我正在通过我的系统与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 -sch .[!.]* * |sort -h
在你的家庭文件夹中。
或者,我最常使用的命令是
ncdu
如果需要,易于安装:
sudo apt-get install ncdu
次佳解决思路
我在coreutils邮件列表中有同样的问题,因为我很难记住@ don.joey这个奇怪的命令。而Bob Proulx proposed更好,更自然命令:du -ahd1 | sort -h
If you want to list all of the files in the current directory then either use ‘.’ or don’t give it any file arguments at all. Also you may want to use the -d, –max-depth=N option.
Try this:
du -hd1
第三种解决思路
在目录中运行相同的命令时,它不包括以.
开头的隐藏文件。如果你安装了Steam,它默认安装在~/.local/share/Steam/
下,并且它本身也安装在那里。
在bash下你显然需要运行du -sch .[!.]* *
,因为它没有正确地扩展.*
glob。在zsh
或其他shell下,du -sch * .*
应该可以工作,因为.*
应该扩展为包含当前目录中所有隐藏文件的列表。