Mein Ziel ist es, die Festplatten größer als 100G von lsblk zu bekommen.
Ich habe es funktioniert, aber es ist umständlich. Ich bin mir ziemlich sicher, dass es gekürzt werden kann. Entweder indem ich etwas völlig anderes als lsblk benutze, oder vielleicht kann ich von Menschen lesbare Zahlen direkt mit awk filtern.
Folgendes habe ich zusammengestellt:
lsblk | grep disk | awk '{print$1,$4}' | grep G | sed 's/.$//' | awk '{if($2>100)print$1}'
Es wird nur der sdx- und der nvmexxx-Teil der Festplatten ausgegeben, die größer als 100 G sind. Genau das was ich brauche.
Ich bin zufrieden damit, aber ich bin gespannt darauf, mehr von dir zu lernen
Antworten:
Sie können die gewünschte Ausgabeform angeben
lsblk
:Verwendete Optionen :
Dann ist das Filtern einfacher:
In deinem Fall wäre das
100*2^30
für 100GiB oder100e9
/1e11
und 100GB.quelle
egrep '\d{12,}'
, um Zeilen mit <12 Ziffern in einer Sequenz zu entfernen. Awk ist natürlich universeller.Sie können auch festlegen
lsblk
, dass die Ausgabe im JSON-Format erfolgen soll und die Filterung mitjq
:Oder:
Auf Einträge des Typs beschränken
disk
.(
1e11
Ersetzen Sie 100 GB durch107374182400
(oder100*1024*1024*1024
) für 100 GB. Aufgrund von Rundungen werdenlsblk
ohne-b
Berichte 100 GB für Größen zwischen 99,9278 und 100,0488 GB (aus irgendeinem Grund) ausgegeben.)Mit
lsblk -OJb
werdenlsblk
alle verfügbaren Informationen gemeldet, mit denen Sie eine feinere Auswahl treffen oder mehr oder relevantere Informationen ausgeben können.Sie können die Informationen auch direkt von erhalten
/sys
. Mitzsh
:quelle
jq
(die ich erst vor einigen Monaten kennengelernt habe).Versuchen
Dadurch wird gleichzeitig gegriffen und gefiltert.
$4 ~ /G$/
abgelegt werden mit größe in g$4+0 > 100
erhalten Sie Größe über 100G{print $1}
NAME druckenIn der Regel sollten Sie niemals
grep
undawk
in der gleichen Leitung verwenden müssen.um nur festplatte (und keine partition) zu bekommen: awk filterung
wo
$6 == "disk"
Nur Spalte mit Platte auswählenUm nur die Festplatte (und keine Partition) zu erhalten: lsblk-Filterung
wo
--nodeps
: -d, --nodeps drucken keine Slaves oder Holderquelle
--no-deps
Option wahrscheinlich verwenden würde , um dem allgemeinen Stil dieser Antwort zu entsprechen)