Überprüfen Sie, ob eine Datei in Bash leer ist

Faaiq Bilal 15 Februar 2024
  1. Verwenden Sie den Befehl test mit dem Optionsflag -s, um zu prüfen, ob eine Datei in Bash leer ist
  2. Verwenden Sie den Befehl ls, um zu prüfen, ob eine Datei in Bash leer ist
Überprüfen Sie, ob eine Datei in Bash leer ist

Oft muss überprüft werden, ob eine Datei leer ist oder nicht, und zum Glück gibt es ein paar einfache Methoden, um dies mit Bash auf dem Terminal oder sogar mit einem Bash-Skript zu überprüfen.

Verwenden Sie den Befehl test mit dem Optionsflag -s, um zu prüfen, ob eine Datei in Bash leer ist

Der Befehl test ist einer der hilfreichsten eingebauten Shell-Befehle und hat viele Optionen für Dateien und Verzeichnisse. Die Option -s des test-Befehls prüft, ob eine Datei grösser als 0 ist oder nicht.

Wenn die Dateigröße null überschreitet, gibt der Befehl true zurück. Andernfalls wird false zurückgegeben.

Die Verwendung von test -s wird unten demonstriert. Wir erklären den Befehl test anhand eines Beispiels.

In diesem Beispiel haben wir eine Datei namens newFile.txt. Wir erstellen ein Bash-Skript mit dem Titel empty_test.sh wie folgt:

#!/bin/bash
test -s newFile.txt && echo "file has something" || echo "file is empty"

Wenn die Datei newFile.txt leer ist, dann hat die Shell folgende Ausgabe:

Leere Ausgabe

Wenn andererseits newFile.txt einen Inhalt hat, wie zum Beispiel:

Hello!

Dann sieht die Ausgabe wie folgt aus:

Nicht leere Ausgabe

Der obige Befehl ist eine einfache Methode, um zu überprüfen, ob die ausgewählte Datei leer ist oder nicht. Es wird Datei hat etwas ausgeben, wenn test -s newFile.txt als wahr ausgewertet wird.

Andernfalls wird Datei ist leer ausgegeben. Dieser Befehl kann in einem Bash-Skript verwendet oder direkt im Terminal ausgeführt werden.

Es ist wichtig zu beachten, dass es erforderlich ist, den vollständigen Dateipfad zu schreiben, wenn dieser Befehl in einem anderen Verzeichnis oder auf einer anderen Ebene als der zu prüfenden Datei verwendet wird.

Es gibt eine alternative Möglichkeit, den obigen Befehl zu schreiben. In Bash ist [ auch eine eingebaute Shell und entspricht dem test-Befehl:

#!/bin/bash
[ -s newFile.txt ] && echo "file has something" || echo "file is empty"

Dieser Befehl entspricht dem zuvor verwendeten Befehl.

Wir können auch den Befehl test -s verwenden, um alle leeren Dateien in einem bestimmten Verzeichnis zu finden:

#!/bin/bash
for file in *.txt;
do if [ ! -s $file ];
then echo $file;
fi;
done

Die obigen Befehle drucken die Namen aller leeren .txt-Dateien im Verzeichnis. Es kann einfach angepasst werden, um verschiedene Dateitypen zu überprüfen, indem Sie einfach .txt durch eine andere Erweiterung ersetzen.

Verwenden Sie den Befehl ls, um zu prüfen, ob eine Datei in Bash leer ist

Der Befehl ls listet alle Dateien und Unterverzeichnisse im aktuellen Verzeichnis auf. Der Befehl ls kann auch mit dem Optionsflag -s verwendet werden, um die Größe der Dateien neben ihren Namen anzuzeigen.

Wenn wir beispielsweise den Befehl ls -s in dem von uns erstellten Verzeichnis test mit zwei Unterverzeichnissen und einer .docx-Datei ausführen, erhalten wir diese Ausgabe:

MacOS ls-Ausgabe

Es ist wichtig zu beachten, dass dieser Befehl in macOS die Größe aller Unterverzeichnisse als 0 anzeigt. Dies ist unabhängig davon, ob die Unterverzeichnisse andere Inhalte haben oder nicht.

Es sollte auch beachtet werden, dass die verwendete Standard-Shell zsh ist (nicht bash). Dies ist jedoch kein durch die Shell verursachter Unterschied, sondern durch das Betriebssystem selbst.

Um dieses Ergebnis in einer Linux-Umgebung zu veranschaulichen, speziell unter Verwendung von bash, haben wir einen Testordner mit zwei leeren Verzeichnissen mit den Titeln Test 1 und Test 2 erstellt. Es enthält auch zwei Textdateien, wobei test.txt eine kleine Zeichenfolge enthält und test2.txt eine leere Textdatei ist.

Linux-ls-Ausgabe

Unterverzeichnisse werden unabhängig von der Grösse ihres Inhalts mit 4 Kilobyte angezeigt. Dies ist nicht repräsentativ für den tatsächlichen Inhalt des Ordners; dies ist der Platz, den der Eintrag selbst belegt.

Eine bessere Methode ist die Verwendung des Befehls ls mit dem Optionsflag -l, da dies mehr Informationen in Form einer Tabelle anzeigt:

ls -l

Wir führen diesen Befehl im selben Test-Verzeichnis wie zuvor aus. Die Ausgabe ist wie folgt:

Linux ls l Ausgabe

Wie oben zu sehen ist, gibt der Befehl ls -l mehr Informationen und zeigt die korrekte Größe von Unterverzeichnissen an.

Um die Größe in KB, MB und GB anzuzeigen, verwenden Sie die Option -lh. Die Einbeziehung des h-Flags macht die Daten für Menschen lesbarer.

Die Ausgabe wird in etwa so aussehen:

Linux ls lh-Ausgabe

Verwandter Artikel - Bash File