文件、文件夾個數統計
Linux 中可以通過 ls -l 或者 find -type f 來統計文件、文件夾的個數,具體操作如下。
- 查看某文件夾下文件的個數:
ls -l | grep "^-" | wc -l
# ls -l 列出文件及文件夾
# "^-" 以-開頭的行 文件以-開頭 文件夾以d開頭
# wc -l 統計行數
或者可以:
find ./ -type f | wc -l
# ./ 在當前目錄查找
# -type f 文件類型
# wc -l 統計行數
- 查看某文件夾下文件的個數,包括子文件夾:
ls -lR | grep "^-" | wc -l
# -R 遞歸列出子目錄的文件
- 查看某文件夾下文件夾的個數,包括子文件夾:
ls -lR | grep "^d" | wc -l
# "^d" 以d開頭的行
文件、文件夾大小統計
使用 du、df、free 進行統計,詳細見下。
du 詳解
Linux du 命令用於顯示目錄或文件的大小。
du 會顯示指定的目錄或文件所占用的磁盤空間。
語法:
du [-abcDhHklmsSx] [目錄或文件]
參數說明:
- -a 或 -all:顯示目錄中文件的大小,單位 KB
- -b:顯示目錄中文件的大小,以字節 byte 為單位
- -c:顯示目錄中文件的大小,同時顯示總和,單位 KB
- -k:顯示目錄中文件的大小,單位 KB
- -m:顯示目錄中文件的大小,單位 MB
- -s:僅顯示目錄的總值,單位 KB
- -h:--human-readable 以K,M,G為單位,提高信息的可讀性。
- -x:以一開始處理時的文件系統為准,若遇上其它不同的文件系統目錄則略過。
- -H:--si 與 -h參數相同,但是 K、M、G是以1000為換算單位
- --max-depth = 1 :遍歷深度
實例:
du -h * # 顯示當前目錄下文件的大小
du -sh # 查看當前文件夾大小
du -sh * | sort -nr # 統計當前文件夾(目錄)大小,並按文件大小排序 -- 加了-h之后排序有問題
du -sk filename # 查看指定文件大小
使用 sort 的參數 -nr 表示要以數字排序法進行反向排序,因為我們要對目錄大小做排序,所以不可以使用 human-readable 的大小輸出,不然目錄大小中會有 K、M 等字樣,會造成排序不正確。
如果有一個進程在打開一個大文件的時候,這個大文件直接被 rm 或者mv 掉,則 du 會更新統計數值,df 不會更新統計數值,還是認為空間沒有釋放。直到這個打開大文件的進程被Kill掉。
df 詳解
Linux df 命令顯示磁盤分區上可以使用的磁盤空間。
- df 可以查看一級文件夾大小、使用比例、檔案系統及其掛入點,但對文件卻無能為力。
- du可以查看文件及文件夾的大小。
兩者配合使用,非常有效。
比如用 df 查看哪個一級目錄過大,然后用 du 查看文件夾或文件的大小,如此便可迅速確定症結。
語法:
df [選項] [file]
參數說明:
- -a: --all 包含所有的具有 0 Blocks 的文件系統,單位默認 KB
- -h:使用 -h 選項以 KB、MB、GB 的單位來顯示,可讀性高~~~(最常用)
- -i:查看目前檔案系統 inode 的使用情形
有的時候雖然檔案系統還有空間,但若沒有足夠的 inode 來存放檔案的信息,一樣會不能增加新的檔案。
所謂的 inode 是用來存放檔案及目錄的基本信息 (metadata),包含時間、檔名、使用者及群組等。在分割扇區時,系統會先做出一堆 inode 以供以后使用,inode 的數量關系着系統中可以建立的檔案及目錄總數。如果要存的檔案大部分都很小,則同樣大小的硬盤中會有較多的檔案,也就是說需要較多的 inode 來掛檔案及目錄。
實例:
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 3.9G 300M 3.4G 8% /
/dev/sda7 100G 188M 95G 1% /data0
/dev/sdb1 133G 80G 47G 64% /data1
/dev/sda6 7.8G 218M 7.2G 3% /var
/dev/sda5 7.8G 166M 7.2G 3% /tmp
/dev/sda3 9.7G 2.5G 6.8G 27% /usr
tmpfs 2.0G 0 2.0G 0% /dev/shm
- Filesystem -- 檔案系統
- Mounted on -- 掛入點
- size -- 分區容量
- Used -- 已使用的大小
- Avail -- 剩下的大小
- Use% -- 使用的百分比
FreeBSD下,當硬盤容量已滿時,可能會看到已使用的百分比超過 100%,因為 FreeBSD 會留一些空間給 root,讓 root 在檔案系統滿時,還是可以寫東西到該檔案系統中,以進行管理。
free 詳解
Linux free 命令可以顯示 Linux 系統中空閑的、已用的物理內存及交互區內存(swap),及被內核使用的 buffer(內核緩沖區內存)。共享內存將被忽略。
語法:
free [參數]
total used free shared buffers cached
Mem: 32948032 32767416 180616 0 139960 29878896
-/+ buffers/cache: 2748560 30199472
Swap: 8193140 664956 7528184
參數說明:
- -b:以 Byte 為單位顯示內存使用情況
- -k:以 KB 為單位顯示內存使用情況
- -m:以 MB 為單位顯示內存使用情況
- -g:以 GB 為單位顯示內存使用情況
- -t:顯示內存綜合列
參考鏈接:linux查看文件夾大小、文件個數的方法