当我正在检查我的系统以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