我的计算机上连接了 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
将字节转换为“人类可读”的格式。