Überprüfen Sie, ob eine Datei in Bash leer ist
-
Verwenden Sie den Befehl
test
mit dem Optionsflag-s
, um zu prüfen, ob eine Datei in Bash leer ist -
Verwenden Sie den Befehl
ls
, um zu prüfen, 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:
Wenn andererseits newFile.txt
einen Inhalt hat, wie zum Beispiel:
Hello!
Dann sieht die Ausgabe wie folgt aus:
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:
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.
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:
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: