这个系统是linux mint 18.3,基本上是ubuntu。
sudo du --apparent-size -sb /tmp
产量476MB目前在我的系统上。
如果我运行sudo du --apparent-size -sb /tmp/* /tmp/.??*
并将其全部加起来,我会得到4MB。
(我知道 -b 包括 --apparent-size,只是想明确说明这个问题)
实际上,为了找到总和,因为我很懒,所以我跑了:
sudo du --apparent-size -sb /tmp/* /tmp/.??* | cut -f 1 | paste -sd+ - | bc
为什么有区别? /tmp 中是否有 du 未找到的隐藏文件,或者我的命令是否有错误?
编辑:尽管我很难.??*
捕获 .dirs 和 .files,但在这种情况下没有 .a、.b、.c 等文件。
答案1
重现这种情况的一种方法是创建大量空文件(最好是长文件名长度),这将扩展.
存储文件名的目录 ( ) 的大小,但不会扩展文件的大小(并且与存储文件的*
目录不匹配)这些文件名被存储):
% mkdir emptydir && cd emptydir
% du --apparent-size -sb .
6 .
% du --apparent-size -sb * | cut -f 1 | paste -sd+ - | bc
zsh: no matches found: *
% jot 100000 | while read n; do touch $n; done
% du --apparent-size -sb .
2359296 .
% du --apparent-size -sb * | cut -f 1 | paste -sd+ - | bc
0
因此,我们在这里将空目录从 6 改为 2359296,而 glob 版本的总数仍然为零,因为创建的文件都是空的。