Mon objectif est d'obtenir des disques supérieurs à 100G auprès de lsblk.
Je le fais fonctionner, mais c'est gênant. Je suis sûr que cela peut être raccourci. Soit en utilisant quelque chose de totalement différent de lsblk, soit je peux filtrer les nombres lisibles par l'homme directement avec awk.
Voici ce que j'ai rassemblé:
lsblk | grep disk | awk '{print$1,$4}' | grep G | sed 's/.$//' | awk '{if($2>100)print$1}'
Il ne produit que la partie sdx et nvmexxx des disques supérieurs à 100G. Exactement ce dont j'ai besoin.
J'en suis content, mais j'ai hâte d'en savoir plus sur vous, gourous 😉
Réponses:
Vous pouvez spécifier la forme de sortie souhaitée à partir de
lsblk
:Options utilisées :
Ensuite, le filtrage est plus facile:
Dans votre cas, ce serait
100*2^30
pour 100GiB ou100e9
/1e11
pour 100Go.la source
egrep '\d{12,}'
pour supprimer les lignes avec <12 chiffres dans une séquence. Awk est bien sûr plus universel.Vous pouvez également indiquer la
lsblk
sortie au format JSON et effectuer le filtrage avecjq
:Ou:
Limiter aux entrées de type
disk
.(
1e11
soit 100 Go. Remplacez par107374182400
(ou100*1024*1024*1024
) pour 100 Gio. En raison de l'arrondissement,lsblk
lui - même sans-b
rapports 100 G pour des tailles allant d'environ 99,9278 à 100,0488 Gio (pour une raison quelconque))Avec
lsblk -OJb
,lsblk
rapporte toutes les informations disponibles qui vous permettent de faire une sélection plus fine ou de produire des informations plus ou plus pertinentes.Vous pouvez également obtenir les informations directement auprès de
/sys
. Aveczsh
:la source
jq
(dont j'ai appris il y a seulement quelques mois).essayer
ce sera grep et filtrer en même temps.
$4 ~ /G$/
se classer avec la taille en G$4+0 > 100
obtenir une taille supérieure à 100G{print $1}
imprimer le NOMen règle générale, vous ne devriez jamais avoir besoin d'utiliser
grep
etawk
dans le même tuyau.pour obtenir uniquement le disque (et pas de partition): filtrage awk
où
$6 == "disk"
sélectionner uniquement la colonne avec le disquepour obtenir uniquement le disque (et pas de partition): filtrage lsblk
où
--nodeps
: -d, --nodeps n'imprime pas les esclaves ou les détenteursla source
--no-deps
option, conformément au style général de cette réponse)