/etc/*.conf
在这种情况下,我想打印某个文件夹中文件的大小。
当我使用时:
cd /etc
du -ch $(ls | grep .conf) | tail -1 | cut -f1
我得到120K。
当我使用时:
du -bch $(ls | grep .conf) | tail -1 | cut -f1
我得到46K。这应该是相同的大小,但以字节为单位,对吧?所以它应该是某种120000
,对吧?
当我使用时:
du -bsh $(ls | grep .conf) | tail -1 | cut -f1
我得到1.3K,这个人是什么?
答案1
du -hc
将文件大小显示为文件系统块大小(通常为 4K)的倍数。这是列出的文件的实际磁盘使用情况。该-h
选项使用人类可读的格式 (K/M/G) 打印尺寸,并且该-c
选项在列表末尾打印总尺寸。
[root@testvm1 etc]# du -hc *.conf
4.0K asound.conf
4.0K chrony.conf
4.0K dracut.conf
....
4.0K vconsole.conf
4.0K yum.conf
104K total
使用 时du -bch
,-b
参数列出文件大小(以字节为单位)。但是,此选项还意味着该--apparent-size
选项显示文件的表观大小而不是磁盘使用情况。这通常会导致总数较低:
[root@testvm1 etc]# du -bch *.conf
55 asound.conf
1.1K chrony.conf
1.3K dracut.conf
....
41 vconsole.conf
970 yum.conf
32K total
du -sh
使用该-s
选项,该选项显示每个参数的总大小。此选项通常与目录一起使用。当针对文件列表使用时,该-s
选项不会产生任何特殊输出。命令的输出du -bsh
很可能是列表中最后一个文件的大小。
该-b
选项相当于--apparent-size --block-size=1
.要使用块大小计算同时将单位保留为字节,请仅使用该--block-size
选项。
[root@testvm1 etc]# du --block-size=1 -c *.conf
4096 asound.conf
4096 chrony.conf
4096 dracut.conf
...
4096 vconsole.conf
4096 yum.conf
106496 total
答案2
du
您应该检查没有的结果| tail -1 | cut -1
(忽略 -h 选项,仅添加 k、M...)
(基于http://man7.org/linux/man-pages/man1/du.1.html)
-c
将打印所有文件的磁盘使用情况加上总计。请注意,根据您的文件系统格式,文件的磁盘使用量将大于其实际大小)
-bc
将打印“实际”大小而不是其在磁盘上使用的大小。
-bs
只会打印给定的每个文件/文件夹的总“实际”大小du
。由于您深入每个文件,它将计算每个 *.conf 文件的大小,最后一行是您给他的最后一个 *.conf 文件的大小。
PS:你可能可以这样做:du -bch *.conf
而不是 grep on ls 结果。