当前位置: 首页>>技术问答>>正文


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

,

问题描述

当我发现这一点时,我正在通过我的系统与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 * .*应该可以工作,因为.*应该扩展为包含当前目录中所有隐藏文件的列表。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/628.html,未经允许,请勿转载。