Tengo 15 discos duros SATA conectados a mi computadora y tener que revisarlos uno por uno, anotar el espacio libre y luego resumir todo no es lo ideal.
¿Existe un comando o una combinación de comandos que pueda hacer eso? Idealmente, podría pasar algo así /dev/sd*
ya que no quiero incluir las unidades nvme.
Respuesta1
EDITAR: Debería leer las páginas de manual con más frecuencia. Es tan simple como
df --total -h /dev/sd*
Está bien, descubrí algo
df --output=avail /dev/sd* | tail -n +2 | datamash sum 1
Básicamente, lo que esto hace es enumerar los discos montados y mostrar solo el espacio disponible como salida, luego usar tail para eliminar la primera línea que es el título de la columna Avail
y finalmente sumar los números con datamash.
Respuesta2
Tenga en cuenta que el df
comando para excluir entradas del disco RAM virtual como /dev
, utilice el -x
parámetro:
df -x tmpfs -x devtmpfs --total -h
Otra forma de hacerlo es con el lsblk
comando
-l
salida en formato de lista-n
saltar la línea del encabezado-b
imprimir en bytes-o
genera las columnas especificadasFSAVAIL
Tamaño del sistema de archivos de impresión disponible/gratis.
lsblk -l -n -b -o FSAVAIL | grep -v ^$ | \
awk '{sum+=$1} END{print sum}' | numfmt --to=iec
Úselo grep
para excluir líneas vacías, awk
para sumar la primera columna y, finalmente, numfmt
para convertir bytes al formato "legible por humanos".