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

Dr_*_*sen 184 disk-usage

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
Run Code Online (Sandbox Code Playgroud)

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

don*_*oey 333

du -sch .[!.]* * |sort -h
Run Code Online (Sandbox Code Playgroud)

在您的主文件夹中。

或者,我最常使用的命令是

ncdu
Run Code Online (Sandbox Code Playgroud)

如果需要,易于安装:

sudo apt-get install ncdu
Run Code Online (Sandbox Code Playgroud)

  • 这无法列出名为“..foo”的文件,并且可能会导致名称以“-”开头的文件出现问题。如果 arg 列表太长,它也可能失败。`du -ahd1` 不会有这些问题。 (16认同)
  • @Dr_Bunsen:它是一个 glob,列出了所有以单个 `.` 开头的文件。这是一个巧妙的技巧:如果你不知道一个看起来像 glob-looking 的东西是做什么的,试着运行 `echo .[!.]*` 或其他什么。然后 shell 将扩展 glob 并将其传递给 `echo`,打印出结果的文件列表。 (11认同)

Yur*_*kov 72

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

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

尝试这个:

杜-hd1

  • 添加 `-a` 选项使其等效。 (8认同)
  • 这应该是公认的答案,因为它更简单,更容易记住和理解。 (7认同)

dob*_*bey 9

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

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

  • 好的。显然 bash 有问题,因为它似乎没有正确扩展 `.*`。但是 `du -sch * .*` 在 `zsh` 下确实做了正确的事情。在 bash 下,`du -sch .*` 似乎计算了 `.`,但不会扩展以单独显示文件。 (2认同)