關於右鍵屬性與du -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 你的文件或文件夾

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM