我想使用以下命令估计目录使用的磁盘空间量。
du -sh dir_name
Run Code Online (Sandbox Code Playgroud)
它不计算隐藏目录。在 du 的手册页中没有关于它的信息。如何计算目录(包括隐藏文件)使用的磁盘空间量。
小智 159
此命令使用正则表达式显示隐藏目录的汇总大小:
du -hs .[^.]*
Run Code Online (Sandbox Code Playgroud)
小智 36
正确的命令是: du -hs $(ls -A)
$ du -hs $(ls -A)
0 test
0 .test
Run Code Online (Sandbox Code Playgroud)
du -hs .* *
,如另一个答案中所述,如果要列出所有文件和子目录(包括隐藏的),则不正确。
例子 :
$ touch test
$ touch .test
$ echo *
test
$ echo .* *
. .. .test test
$ du -hs .* *
4,0K .
1,8G ..
Run Code Online (Sandbox Code Playgroud)
为什么du
会有这样的行为?因为您使用的-s
是总结结果并且所有文件和子目录都是其子目录,.
所以du -hs
没有列出它们!
sti*_*vlo 23
确实如此,证据如下:
mkdir .test
echo "hi" > .test/appo
du -a
4 ./.test/appo
8 ./.test
12 .
Run Code Online (Sandbox Code Playgroud)
该-a
选项用于明确显示哪些文件被计算在内。
你在用du *
吗?
Abh*_*ogi 13
仅供参考,为了估计各种目录占用的大小,使用ncdu会更好
您可以在不同目录之间的 ncurses GUI 中导航,它将显示每个目录的大小。如果我正在使用 du,我将不得不为我想要检查的每个目录执行 du 命令,这可能很麻烦。您也可以在 ncurses GUI 中根据占用的大小对目录进行排序。
ls -A
用于列出文件和xargs
操作输出的解决方案:
ls -A | xargs -I {} du -sh {}
此解决方案可确保正确处理带空格的文件名。
小智 6
它有,也没有。例子:
在主目录中:(仅存在一个用户)
du -sh /home/*
2.6G /home/user
Run Code Online (Sandbox Code Playgroud)
在用户目录中:(总和之间的巨大差异)
du -sh *
61M bin
2.0M dump-20130124104823.tar.gz
651M public_html
472K twitter-2.0.0.gem
11M wkhtmltopdf-0.11.0_rc1-static-amd64.tar.bz2
Run Code Online (Sandbox Code Playgroud)
原因是:
du -sh /home/user/.rvm/
1.9G /home/user/.rvm/
Run Code Online (Sandbox Code Playgroud)
du
将在下降到子目录时计算隐藏目录,但在当前目录中 * 根本不匹配 .directory_name 模式,因此将省略当前目录隐藏元素。
我花了一些时间才弄明白,正如 shadyabhi 建议的那样,如果我使用了 ncdu,那就很明显了。
du -ahd1 | sort -hr | head -10
Run Code Online (Sandbox Code Playgroud)
以下是-d
选项的说明du --help
:
-d, --max-depth=N 打印目录(或文件,使用 --all)的总数,仅当它低于命令行参数 N 或更少级别时;--max-depth=0 与 --summarize 相同
归档时间: |
|
查看次数: |
101579 次 |
最近记录: |