Commande linux pour rechercher le nombre total de disques et de disques durs

y a-t-il une commande dans bash qui peut vous donner le nombre total de numéros d’espace disque / disque dur.

Je sais que la commande df est très utile mais la sortie est trop verbeuse:

# 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 

Je veux essentiellement “16To” à la fin, y at-il une commande à scope de main ou je dois écrire un programme pour calculer le disque total en fonction de la sortie de df.

Qu’en est-il de:

 df --total 

Astuce: regardez d’abord la page de manuel: man df . J’ai du mal ces jours-ci à trouver des aspects pour un programme qui n’ont pas été implémentés par un joli drapeau. Les utilisateurs de Linux semblent simplement savoir ce que les programmeurs veulent / ont besoin.

Ou si vous ne voulez que le total:

 df --total | tail -n 1 

Et si vous voulez le spécifier dans une taille de bloc spéciale (comme TB ), vous pouvez définir le drapeau -B :

 df --total -BT | tail -n 1 

Et au cas où vous ne seriez intéressé que par la taille totale (par exemple, vous souhaitez utiliser le résultat dans un autre programme bash ):

 df --total -BT | tail -n 1 | sed -E 's/total *([^ ]*).*/\1/' 

La réponse de CommuSoft est plus agréable, mais voici une autre solution utilisant awk:

 df -m | awk '{ SUM += $2} END { print SUM/1024/1024"TB" }' 

L’utilisation de l’option -m permet d’afficher les résultats de df dans la même unité (Mo). Une division simple peut traduire facilement le résultat en TB.

Une autre solution utilisant awk . Cela imprimera les lignes d’en-tête et de total:

 df --total -h | awk '!/^\//' 
  • awk commande awk imprime toutes les lignes sauf celles qui commencent par character / .
  • df avec -h ou --human-readable tailles d’impression --human-readable en puissances de 1024 (par exemple, 1023M).

Le résultat ressemblera à ceci:

 Filesystem Size Used Avail Use% Mounted on total 3.9T 1.7T 2.3T 42% - 

Comme Mounted on field est inutile, vous pouvez le supprimer en ajoutant un sed à la commande précédente:

 $ df --total -h | awk '!/^\//' | sed -E 's/Mounted on|\s-//' Filesystem Size Used Avail Use% total 3.9T 1.7T 2.3T 42%