我的電腦上連接了 15 個 SATA 硬碟,必須一一檢查它們,記下可用空間,然後總結所有內容,這並不理想。
是否有一個命令或命令組合可以做到這一點?理想情況下,我可以傳遞類似的內容,/dev/sd*
因為我不想包含 nvme 驅動器。
答案1
編輯:我應該更頻繁地閱讀手冊頁。這很簡單
df --total -h /dev/sd*
好吧,我想出了一些辦法
df --output=avail /dev/sd* | tail -n +2 | datamash sum 1
這基本上所做的是列出已安裝的磁碟並僅顯示可用空間作為輸出,然後使用 tail 刪除第一行(即列標題),Avail
最後使用 datamash 對數字求和。
答案2
請記住,df
為了排除虛擬 RAM 磁碟條目(例如 )/dev
,請使用以下-x
參數:
df -x tmpfs -x devtmpfs --total -h
另一種方法是使用lsblk
指令
-l
以列表格式輸出-n
跳過標題行-b
以位元組為單位列印-o
輸出指定列FSAVAIL
列印檔案系統大小可用/免費
lsblk -l -n -b -o FSAVAIL | grep -v ^$ | \
awk '{sum+=$1} END{print sum}' | numfmt --to=iec
用於grep
排除空行,awk
對第一列求和,最後numfmt
將位元組轉換為“人類可讀”格式。