sh显示的文件大小不一致的解决

du -sh filename(其实我们经常用du -sh *,显示当前目录下所有的文件及其大小,如果要排序再在后面加上 | sort -n)

关于右键属性与du -sh显示的文件大小不一致的解决:

总之:我的理解就是du查到的是实际硬盘上的block大小,包括很多隐藏文件,软,硬链接,以及由于磁盘格式划分等等的问题,导致了不一致,

右键属性相当于

du --exclude='.*' --exclude='*~' -b -D -s 你的文件或文件夹  及除开那些多余的东西。

而du -sh 则是全部显示了出来,所以,他显示的要大。

 

 

(百度到的,我认为合理)

 

这里有几方面的问题, 导致有好几种计算文件大小方法.

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
# 系统文件管理 没算上(右键属性)

 

 

Gnome 默认的文件管理器 nautilus 统计文件大小的时候忽略隐藏文件(对应du --exclude='.*' --exclude='*~'), 会跟入一层符号链接(对应 du -D), 显示文件内容大小(而不是磁盘占用), 并以1000进位(du -b).

最后合起来就是
du --exclude='.*' --exclude='*~' -b -D -s 你的文件或文件夹

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/15230.html