bash中是否有一个命令可以给出磁盘空间/硬盘号的总数。
我知道df命令非常有用,但是输出过于冗长:
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda4 721G 192G 492G 29% /
tmpfs 129G 112K 129G 1% /dev/shm
/dev/sda1 194M 92M 93M 50% /boot
/dev/sdj1 917G 547M 870G 1% /data10
/dev/sdk1 917G 214G 657G 25% /data11
/dev/sdl1 917G 200M 871G 1% /data12
/dev/sdm1 917G 200M 871G 1% /data13
/dev/sdn1 917G 200M 871G 1% /data14
/dev/sdo1 917G 200M 871G 1% /data15
/dev/sdp1 917G 16G 855G 2% /data16
/dev/sdb1 917G 4.6G 866G 1% /data2
/dev/sdc1 917G 74G 797G 9% /data3
/dev/sdd1 917G 200M 871G 1% /data4
/dev/sde1 917G 200M 871G 1% /data5
/dev/sdf1 917G 200M 871G 1% /data6
/dev/sdg1 917G 764G 107G 88% /data7
/dev/sdh1 917G 51G 820G 6% /data8
/dev/sdi1 917G 19G 853G 3% /data9
/dev/sda2 193G 53G 130G 30% /home
cm_processes 129G 46M 129G 1% /var/run/cloudera-scm-agent/process我基本上想要‘16 to’在最后,是否有一个命令方便,或我必须编写一些程序来计算整个磁盘根据输出的df。
发布于 2014-12-15 19:48:54
那麽:
df --total提示:首先查看手册页:man df。最近,我发现很难找到一个程序的各个方面,而这些方面还没有被一些好的标志所实现。Linux的人们似乎只知道程序员想要/需要什么。
或者如果你只想要总数:
df --total | tail -n 1如果您想在一个特殊的块大小(如TB)中指定它,可以设置-B标志:
df --total -BT | tail -n 1如果您只对总大小感兴趣(例如,您希望在另一个bash程序中使用结果):
df --total -BT | tail -n 1 | sed -E 's/total *([^ ]*).*/\1/'发布于 2014-12-15 19:58:34
另一种使用awk的解决方案。这将打印标题和总行:
df --total -h | awk '!/^\//'awk命令将打印所有行,但以字符/开头的行除外。df,具有-h或--human-readable打印尺寸,功率为1024 (例如,1023 M)。结果如下:
Filesystem Size Used Avail Use% Mounted on
total 3.9T 1.7T 2.3T 42% -由于Mounted on字段是无用的,您可以通过向前面的命令添加一个sed来删除它:
$ df --total -h | awk '!/^\//' | sed -E 's/Mounted on|\s-//'
Filesystem Size Used Avail Use%
total 3.9T 1.7T 2.3T 42%发布于 2014-12-15 19:54:00
CommuSoft的回答更好,但下面是使用awk的另一种解决方案:
df -m | awk '{ SUM += $2} END { print SUM/1024/1024"TB" }'使用-m选项使来自df的结果显示在同一个单元(MB)中。一个简单的划分可以很容易地将结果转化为TB。
https://stackoverflow.com/questions/27491881
复制相似问题