Linux學習筆記:查看文件大小、文件個數


文件、文件夾個數統計

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查看文件夾大小、文件個數的方法

參考鏈接2:linux之ls -l|grep "^-"|wc -l命令

參考鏈接3:Linux中 du (詳解)、 df (詳解)和 free(詳解)以及它們的區別


免責聲明!

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



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