歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 關於右鍵屬性與du -sh顯示的文件大小不一致的解決

關於右鍵屬性與du -sh顯示的文件大小不一致的解決

日期:2017/2/28 13:51:24   编辑:Linux教程

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 你的文件或文件夾
Copyright © Linux教程網 All Rights Reserved