1. 内容大小 和 磁盘(或者别的什么储存器)占用大小, 比如
# 文件内容是 三个字母加一个换行
~/tmp$ cat abc.txt
efg
# 内容大小是 4 字节(--apparent-size 计算内容大小, --block-size=1 以字节位单位)
~/tmp$ du --apparent-size --block-size=1 abc.txt
4 abc.txt
# 占用磁盘空间4096字节, 这个结果跟磁盘格式密切相关
~/tmp$ du --block-size=1 abc.txt
4096 abc.txt
2. 符号链接(symbolic links 或 soft links 或 symlinks)的问题
# 这里有个指向刚才那个文件的符号链接
~/tmp$ ls -nl link_abc.txt
lrwxrwxrwx 1 1000 1000 7 Jan 28 18:34 link_abc.txt -> abc.txt
# 符号链接本身不占用"普通的"磁盘空间, 就像一个空文件一样.
~/tmp$ du --block-size=1 link_abc.txt
0 link_abc.txt
# 不过内容大小还是有的, 实际上是 "abc.txt" 共7个字符.
~/tmp$ du --apparent-size --block-size=1 link_abc.txt
7 link_abc.txt
~/tmp$
# 另外要查看指向的文件的大小的话应该这样 (跟最开始一样)
~/tmp$ du --apparent-size --block-size=1 -L link_abc.txt
4 link_abc.txt
3. 隐藏文件的问题
英文句点"."开头的文件 或者 波浪号"~"结尾的文件属于隐藏文件.
~/tmp$ ls
abc.txt link_abc.txt
~/tmp$ ls -A
abc.txt link_abc.txt .xxx
(不过好像对于 ls 命令来说 "*~" 不属于隐藏文件)
4. 文件夹本身占用空间的问题
# du 是要算上文件夹本身大小的
~/tmp$ du --exclude='.*' --exclude='*~' --apparent-size -s -b -D ~/tmp
4107 /home/xyy/tmp
# nautilus 没算上(右键属性)
11 字节
此外还有硬链接的问题, 设备文件的问题等等.
Gnome 默认的文件管理器 nautilus 统计文件大小的时候忽略隐藏文件(对应du --exclude='.*' --exclude='*~'), 会跟入一层符号链接(对应 du -D), 显示文件内容大小(而不是磁盘占用), 并以1000进位(du -b).
最后合起来就是
du --exclude='.*' --exclude='*~' -b -D -s 你的文件或文件夹
-s 表示只显示一个总大小.
# 文件内容是 三个字母加一个换行
~/tmp$ cat abc.txt
efg
# 内容大小是 4 字节(--apparent-size 计算内容大小, --block-size=1 以字节位单位)
~/tmp$ du --apparent-size --block-size=1 abc.txt
4 abc.txt
# 占用磁盘空间4096字节, 这个结果跟磁盘格式密切相关
~/tmp$ du --block-size=1 abc.txt
4096 abc.txt
2. 符号链接(symbolic links 或 soft links 或 symlinks)的问题
# 这里有个指向刚才那个文件的符号链接
~/tmp$ ls -nl link_abc.txt
lrwxrwxrwx 1 1000 1000 7 Jan 28 18:34 link_abc.txt -> abc.txt
# 符号链接本身不占用"普通的"磁盘空间, 就像一个空文件一样.
~/tmp$ du --block-size=1 link_abc.txt
0 link_abc.txt
# 不过内容大小还是有的, 实际上是 "abc.txt" 共7个字符.
~/tmp$ du --apparent-size --block-size=1 link_abc.txt
7 link_abc.txt
~/tmp$
# 另外要查看指向的文件的大小的话应该这样 (跟最开始一样)
~/tmp$ du --apparent-size --block-size=1 -L link_abc.txt
4 link_abc.txt
3. 隐藏文件的问题
英文句点"."开头的文件 或者 波浪号"~"结尾的文件属于隐藏文件.
~/tmp$ ls
abc.txt link_abc.txt
~/tmp$ ls -A
abc.txt link_abc.txt .xxx
(不过好像对于 ls 命令来说 "*~" 不属于隐藏文件)
4. 文件夹本身占用空间的问题
# du 是要算上文件夹本身大小的
~/tmp$ du --exclude='.*' --exclude='*~' --apparent-size -s -b -D ~/tmp
4107 /home/xyy/tmp
# nautilus 没算上(右键属性)
11 字节
此外还有硬链接的问题, 设备文件的问题等等.
Gnome 默认的文件管理器 nautilus 统计文件大小的时候忽略隐藏文件(对应du --exclude='.*' --exclude='*~'), 会跟入一层符号链接(对应 du -D), 显示文件内容大小(而不是磁盘占用), 并以1000进位(du -b).
最后合起来就是
du --exclude='.*' --exclude='*~' -b -D -s 你的文件或文件夹
-s 表示只显示一个总大小.