So ermitteln Sie die Größe einer Datei in einem Bash-Skript

How Get Size File Bash Script



Beim Schreiben von Shell-Skripten können wir auf eine Situation stoßen, in der wir die Größe einer Datei kennen müssen. Beispielsweise müssen Sie diese Größe möglicherweise verwenden, um andere Aktionen auszuführen, z. B. um die Datei in ein anderes Verzeichnis zu verschieben oder zu löschen.

In diesem Tutorial werden schnelle Methoden erläutert, die Sie in einem Bash-Skript verwenden können, um die Dateigröße im angegebenen Format wie Byte, Kilobyte, Megabyte oder Gigabyte abzurufen.







Methode 1: Der ls-Befehl

Die erste Methode besteht darin, den guten alten ls-Befehl zu verwenden. In Kombination mit anderen Befehlen kann der Befehl ls die Größe einer Datei erfassen.



Um das Skript zu implementieren, benötigen wir den vollständigen Pfad der Datei, listen die Dateiinformationen mit ls auf und ermitteln die Größe mit einem Befehl wie awk.



Ein Beispielskript dafür würde so aussehen:





#!/bin/bash
rauswerfen 'Geben Sie den vollständigen Pfad zur Datei ein.'
lesen Datei
Dateigröße= $(ls -lh $Datei | awk '{$5 drucken}')
rauswerfen '$Dateihat eine Größe von$Dateigröße'

Das obige Skript ist relativ einfach. Mit den Befehlen echo und read erhalten wir den Namen des vollständigen Pfads der Datei.

Als nächstes verwenden wir den Befehl ls -lh, um alle Verzeichnisse und die Größe in einem für Menschen lesbaren Format aufzulisten, und übergeben schließlich die Ausgabe an awk und nehmen die Größe als 5NSVariable.



Das Folgende ist eine Illustration des Skripts.

chmod +x Größe.sh
./größe.sh

Hier ist die Ausgabe dafür:

sudo ./size.sh
Geben Sie den vollständigen Pfad zur Datei ein
/etc/passwd
/etc/passwd hat eine Größe von 2.9K

Methode 2: Der WC-Befehl

Eine andere Methode, mit der wir die Größe einer Datei in einem Bash-Skript ermitteln können, ist der Befehl wc. Der Befehl wc gibt die Anzahl der Wörter, die Größe und die Größe einer Datei in Bytes zurück.

Jetzt:

Wie Sie wissen, ist das Auslesen der Dateigröße in Byte nicht ganz einfach. Um dem entgegenzuwirken, können wir ein einfaches Menü implementieren und den Benutzer nach dem Größenformat wie KB, MB und GB fragen.

Je nach ausgewähltem Format konvertieren wir die Bytes in dieses Format.

Hier ist ein Beispielskript, um eine solche Logik zu implementieren:

#!/bin/bash
rauswerfen 'Größenformat auswählen, numerische Werte verwenden (1 für Bytes, 2 für Kilobytes usw.)'
rauswerfen '''
1. Bytes
2. KiloBytes
3. Megabyte
4. GigaBytes
'
''
rauswerfen '************************************************ * ********************* '
lesenFormat

rauswerfen 'Geben Sie den vollständigen Pfad zur Zieldatei ein: '
lesen Datei
Dateigröße= $(Toilette -C $Datei | awk '{1$ drucken}')
wenn [[('$format'==1)]];
dann
rauswerfen '$Dateiist ca$DateigrößeBytes'
elif [[('$format'==2)]];
dann
ca= $(bc <<<'Skala=3;$Dateigröße/ 1024 ')
rauswerfen '$Dateiist ungefähr$ kbKB '
elif [[('$format'==3)]];
dann
mb= $(bc <<<'Skala=6;$Dateigröße/ 1048576 ')
rauswerfen '$Dateiist ungefähr$ MBMB '

elif [[('$format'==4)]];
dann
gb= $(bc <<<'Skala=12;$Dateigröße/ 1073741824 ')
rauswerfen '$Dateiist ungefähr$ GBGB '
anders
rauswerfen 'Falsches Format.'
Ausfahrt
Sein

Im obigen Skript bitten wir den Benutzer zunächst, das Dateigrößenformat einzugeben. Die Bash liest diese Eingabe und speichert sie in der Formatvariablen.

Als nächstes fragen wir den Benutzer nach dem Dateipfad und speichern diese Variable in einer Datei.

Der nächste Schritt ruft den wc -c-Befehl für die angegebene Datei auf. Da wc -c die Dateigröße in Byte und den Pfad der Datei zurückgibt, verwenden wir AWK, um nur die Dateigröße zu erfassen. Wir speichern die Größe in Bytes als Dateigröße.

Schließlich implementieren wir eine einfache if-Anweisung, um zu überprüfen, ob das Größenformat entweder 1 (Bytes), 2 (Kilobytes), 3 (Megabytes), 4 (Gigabytes) ist. Anschließend verwenden wir den Befehl bc, um die Dateigröße in Bytes in das angegebene Format zu konvertieren.

HINWEIS: Wir verwenden eine variable Skala für den bc-Befehl, um die Anzahl der Dezimalstellen pro Auswertung zu berücksichtigen.

Das Bild unten zeigt, wie das Skript funktioniert.

WEITERE HINWEISE : Das obige Skript ist reines Barebone und daher offen für deutliche Verbesserungen. Fühlen Sie sich frei, es zu verbessern und an Ihre Bedürfnisse anzupassen.

Methode 3: Verwenden des stat-Befehls

Wir können den stat-Befehl nicht vergessen. Mit dem stat-Befehl können wir detaillierte Informationen zu einer Datei oder dem Dateisystem anzeigen.

Der Befehl stat gibt auch die Größe in Bytes zurück. Sie können eine ähnliche Logik im obigen Skript verwenden, um das Format auszuwählen.

Hier ist ein einfaches Skript mit dem stat-Befehl:

#!/bin/bash
rauswerfen 'Geben Sie den Dateipfad ein.'
lesen Datei
Dateigröße= $(Zustand -C %S$Datei)
rauswerfen '$Dateiist präzise$DateigrößeBytes. '

Abschließend

In diesem Tutorial wurden drei Methoden besprochen, mit denen Sie die Größe einer Datei mithilfe eines Bash-Skripts ermitteln können. Es ist gut zu beachten, dass Linux über eine umfassende Sammlung von Tools und Methoden verfügt, um dies zu erreichen. Suchen Sie sich die für Sie passende aus und bleiben Sie dabei.