当我运行命令时:
find / 2>/dev/null -user root -type f -mmin -1 -exec du -cb {} + | grep total | head -1
我得到了相当大的字节数。
但是,当我运行相同的命令但具有可读性而不是字节时,如下所示:
find / 2>/dev/null -user root -type f -mmin -1 -exec du -ch {} + | grep total | head -1
我得到0。我还尝试去掉head -1,以为我抓取了错误的数据,但是每次打印的结果都是0。为什么是这样?是否有另一种方法可以使用find查找字节和人类可读的打印输出来获取找到的所有文件的总大小?
答案 0 :(得分:0)
对-xdev
命令使用find
选项以排除其他文件系统。
我还没有解释为什么的原因,但是我认为这与tmpfs
和devtmpfs
文件系统(例如/proc
)有关。
答案 1 :(得分:0)
运行方案时,我得到了相同的结果,因为-b选项的大小为/proc/kcore
procfs有点黑魔法;其中没有文件是真实的。它看起来像文件系统,行为像文件系统,并且是文件系统。但是没有一个存储在磁盘(或其他位置)上。
/ proc / kcore专门是一个文件,直接映射到虚拟内存中的每个可用字节。 128TB来自Linux,它分配了64位中的47位用于虚拟内存。
当我对-ch参数使用du时,它显示/ proc / kcore为0:
0 / proc / kcore
但是当我使用-cb时,它会将我的/ proc / kcore显示为:
140737486266368 / proc / kcore
这是因为-b选项:
-b, --bytes
equivalent to '--apparent-size --block-size=1'
和--apparent-size
:
--apparent-size
print apparent sizes, rather than disk usage; although the apparent size is
usually smaller, it may be larger due to holes in ('sparse') files, internal
fragmentation, indirect blocks, and the like
参考: