1.使用ls
这是ls的解决方案
ls -l | awk '!/^d/ {sum+=$5} END {print sum}'
结果以字节为单位。模式匹配除目录之外的所有类型的行。例如只包含常规文件,我们可以使用/^-/
来自man ls (1p):
d Directory.
b Block special file.
c Character special file.
l (ell) Symbolic link.
p FIFO.
− Regular file.
2。使用
du
您可以通过du -Ssh获得不包括目录的文件的总估计磁盘使用量(并不总是“大小”)
-S, --separate-dirs
对于目录不包括子目录的大小
使用-h,这将为每个文件计算最小一个块 (4K),因为这通常是文件系统的最小磁盘使用量。 --apparent-size 可用于打印估计实际尺寸。
--apparent-size
打印外观尺寸,而不是磁盘使用情况;尽管表观大小通常较小,但由于(“稀疏”)文件中的孔、内部碎片、间接块等原因,它可能会更大
所以du -Ssh --apparent-size(以人类可读的格式)或du -Ssb(以字节为单位)预计会给出相同的结果。
在这两种情况下,我注意到在使用
-S 时,会为
. 当前目录计算额外的+4K (+4096)。
-b 将计数块大小设置为 1 字节,所以我猜文件大小估计变得准确。所以这是一种提取目录中文件大小(以字节为单位)的方法,不包括子目录
du -Ssb | awk '{print $1-4096}'
请注意,仅排除目录,因此将包括任何其他类型,例如符号链接。