首頁 > 軟體

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

2020-06-16 17:38:45

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 你的檔案或資料夾

本文永久更新連結地址http://www.linuxidc.com/Linux/2016-06/132708.htm


IT145.com E-mail:sddin#qq.com