Tenho 15 discos rígidos SATA conectados ao meu computador e ter que examiná-los um por um, anotar o espaço livre e depois resumir tudo não é o ideal.
Existe um comando ou uma combinação de comandos que poderia fazer isso? Idealmente, onde eu poderia passar algo assim, /dev/sd*
já que não quero incluir as unidades nvme.
Responder1
EDIT: Eu deveria ler as páginas de manual com mais frequência. É tão simples quanto
df --total -h /dev/sd*
Ok, eu descobri uma coisa
df --output=avail /dev/sd* | tail -n +2 | datamash sum 1
O que isso basicamente faz é listar os discos montados e exibir apenas o espaço disponível como saída, depois usar tail para remover a primeira linha que é o título da coluna Avail
e finalmente somar os números com datamash.
Responder2
Lembre-se do df
comando para excluir entradas do disco RAM virtual, como /dev
, use o -x
parâmetro:
df -x tmpfs -x devtmpfs --total -h
Outra maneira de fazer isso é com o lsblk
comando
-l
saída em formato de lista-n
pule a linha do cabeçalho-b
imprimir em bytes-o
gera coluna(s) especificada(s)FSAVAIL
imprimir tamanho do sistema de arquivos disponível/gratuito
lsblk -l -n -b -o FSAVAIL | grep -v ^$ | \
awk '{sum+=$1} END{print sum}' | numfmt --to=iec
Use grep
para excluir linhas vazias, awk
para somar a primeira coluna e, finalmente, numfmt
para converter bytes para o formato "legível por humanos".