5 Möglichkeiten, um zu überprüfen, ob eine Datei in Bash leer ist

5 Möglichkeiten, um zu überprüfen, ob eine Datei in Bash leer ist

In Linux ist eine leere Datei eine Datei mit einer Größe von Null Bytes. Dies bedeutet, dass die Datei keine Daten enthält und keinen Inhalt hat, wenn sie in einem Texteditor geöffnet wird. Eine leere Datei kann mit dem Befehl touch erstellt werden: 'Berühren Sie MyFile.txt'

Dadurch wird eine leere Datei namens MyFile erstellt.txt im aktuellen Verzeichnis. Sie können auch eine leere Datei mit dem Befehl echo mit dem> operator erstellen: Echo> myfile.txt'

Dadurch überschreiben Sie alle vorhandenen Inhalte in der Datei mit einer leeren Zeichenfolge und erstellen Sie effektiv eine leere Datei.

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

Es gibt verschiedene Möglichkeiten, zu überprüfen, ob eine Datei in Bash leer ist, abhängig von Ihren spezifischen Anforderungen und den Tools, die auf Ihrem System verfügbar sind. In diesem Artikel werden wir uns fünf verschiedene Ansätze zur Überprüfung ansehen, ob eine Datei in Bash leer ist.

  1. Verwendung der 'prüfen' Befehl oder '['
  2. Der 'prüfen' Befehl (der ein Alias ​​für die ist '['Befehl) ist ein einfaches und weit verbreitetes Dienstprogramm für die Durchführung verschiedener Tests in Dateien und anderen Objekten in Bash. Um zu überprüfen, ob eine Datei mit leerem mit leer ist '[', du kannst den ... benutzen '-S' Option, die die Größe der Datei überprüft:

    #!/usr/bin/env bash fileName = myfile.TXT # Überprüfen Sie, ob die Datei leer ist, wenn [ ! -S "$ Dateiname"]; Dann ist die echo "Datei" leer "sonst echo" -Datei ist nicht leer "fi
    12345678910#!/usr/bin/env bash fileName = myfile.TXT # Überprüfen Sie, ob die Datei leer ist [ ! -S "$ Dateiname"]; Dann ist die echo "Datei" leer "sonst echo" -Datei ist nicht leer "fi

    Notiere dass der '-S' Die Option berücksichtigt eine Datei als leer, wenn ihre Größe Null ist, aber sie überprüft nicht auf das Vorhandensein versteckter Zeichen oder der Whitespace. Wenn Sie nach einer völlig leeren Datei suchen möchten (ich.e., Sie, der nur Weißespace enthält oder überhaupt keine Linien hat), Sie können die verwenden '-z' Option, die überprüft, ob die Zeichenfolge leer ist:

    #!/usr/bin/env bash fileName = myfile.txt [-z "$ (cat $ Dateiname)"] dann ist echo "Datei leer" else echo "-Datei ist nicht leer" fi
    123456789#!/usr/bin/env bash fileName = myfile.txt [-z "$ (cat $ Dateiname)"] dann ist echo "Datei leer" else echo "-Datei ist nicht leer" fi

    Dadurch wird der Inhalt der Datei gelesen und sie als Zeichenfolge an den Testbefehl übergeben. Wenn die Zeichenfolge leer ist, wird die Datei als leer angesehen.

    Sie können auch nach vorhandenen Dateien überprüfen, bevor Sie nach einer leeren Datei getestet werden. Das folgende Skript prüft, ob die Datei existiert und ob die Datei leer ist oder nicht.

    #!/usr/bin/env bash fileName = myfile.txt if [-f "$ Dateiname"]; dann if [-s "$ fileName"]; dann echo "Datei $ fileName existiert und nicht leer" else echo "Datei Filename existiert, aber leer leer "fi sonst echo" Datei $ Dateiname nicht existiert "fi
    12345678910111213#!/usr/bin/env bash fileName = myfile.txt if [-f "$ Dateiname"]; dann if [-s "$ fileName"]; dann echo "Datei $ Dateiname existiert und nicht leer" else echo "Datei Filename existiert, aber leer leer "fielse echo" Datei $ Dateiname nicht existiert "fi

    Gemäß dem obigen Beispiel, wenn meine Datei.txt existiert nicht, das Skript zeigt die Ausgabe als „Datei nicht existiert“ und wenn die Datei vorhanden ist und eine leere Datei ist, wird die Ausgabe als "Datei existiert, aber leer" angezeigt. Ausgabe als "Datei existiert und nicht leer".

  3. Verwenden des WC -Befehls
  4. Der 'Toilette' (Wortzahl) Befehl ist ein weiteres Dienstprogramm, das verwendet werden kann, um zu überprüfen, ob eine Datei in Bash leer ist. Um die Anzahl der Zeilen in einer Datei zu überprüfen, können Sie die verwenden '-l' Möglichkeit:

    #!/usr/bin/env bash fileName = myfile.TXT # Überprüfen Sie, ob die Datei Zeilen hat, wenn [$ (WC -l < "$FILENAME") -eq 0 ]; then echo "File $FILENAME is empty" else echo "File $FILENAME is not empty" fi
    12345678910#!/usr/bin/env bash fileName = myfile.TXT # Überprüfen Sie, ob die Datei linesif [$ (WC -l) enthält < "$FILENAME") -eq 0 ]; then echo "File $FILENAME is empty"else echo "File $FILENAME is not empty"fi

    Dadurch wird der Inhalt der Datei an die weitergeleitet 'Toilette' Befehl als Standardeingabe und die '-l' Die Option zählt die Anzahl der Zeilen. Wenn die Anzahl der Zeilen Null ist, wird die Datei als leer angesehen.

  5. Verwenden des GREP -Befehls
  6. Der "Grep" Der Befehl ist ein leistungsstarkes Tool zum Suchen und Verarbeitung von Textdateien. Um zu überprüfen, ob eine Datei mit Grep leer ist, können Sie die verwenden '-Q' Option, die dazu führt, dass GREP leise ausgeführt wird und einen Exit -Code zurückgibt:

    #!/usr/bin/env bash fileName = myfile.txt wenn grep -q . "$ Dateiname"; Dann ist die Echo "Datei nicht leer" sonst echo "-Datei ist leer" fi
    123456789#!/usr/bin/env bash fileName = myfile.txt wenn grep -q . "$ Dateiname"; Dann ist die Echo "Datei nicht leer" sonst echo "-Datei ist leer" fi

    Dadurch wird die Datei nach einem beliebigen Zeichen durchsucht (. ist ein regulärer Ausdruck, der mit jedem Zeichen entspricht) und gibt einen Null-Exit-Code zurück, wenn ein Übereinstimmung gefunden wird, oder einen Exit-Code ungleich Null, wenn die Datei leer ist.

    Verwenden Sie den Befehl Find

    Der 'finden' Der Befehl ist ein Dienstprogramm für die Suche und Verarbeitung von Dateien und Verzeichnissen. Um zu überprüfen, ob eine Datei mit dem Fund leer ist, können Sie die Option -ießer verwenden, die mit leeren Dateien entspricht:

    #!/usr/bin/env bash fileName = myfile.txt wenn find . -Typ f -ießer -name "$ Dateiname"; Dann ist die echo "Datei" leer "sonst echo" -Datei ist nicht leer "fi
    12345678#!/usr/bin/env bash fileName = myfile.txtif finden . -Typ f -ießer -name "$ Dateiname"; Dann ist die echo "Datei" leer "sonst echo" -Datei ist nicht leer "fi

    Dadurch wird das aktuelle Verzeichnis durchsucht (.) für Dateien (-typ f) das sind leer (-leer) und den Namen haben "meine Datei.txt" (-name “myfile.txt"). Wenn eine Übereinstimmung gefunden wird, gibt der Befehl Find einen Null -Exit -Code zurück, der angibt, dass die Datei leer ist. Wenn keine Übereinstimmung gefunden wird, gibt der Befehl Find einen Exit-Code ungleich Null zurück, der angibt, dass die Datei nicht leer ist.

    Verwenden des STAT -Befehls

    Der "Status" Der Befehl ist ein Dienstprogramm zum Anzeigen von Informationen zu Dateien und Dateisystemen. Um zu überprüfen, ob eine Datei mit STAT leer ist, können Sie die Option -c verwenden, um die Größe der Datei in Bytes anzuzeigen:

    #!/usr/bin/env bash fileName = myfile.txt if [$ (stat -c %s "$ Dateiname") -Eq 0]; Dann ist die echo "Datei" leer "sonst echo" -Datei ist nicht leer "fi
    12345678#!/usr/bin/env bash fileName = myfile.txtif [$ (stat -c %s "$ Dateiname") -Eq 0]; Dann ist die echo "Datei" leer "sonst echo" -Datei ist nicht leer "fi

    Dadurch wird die Größe der Datei an die weitergeleitet '[' Befehl, der es mit Null vergleichen wird. Wenn die Größe Null ist, wird die Datei als leer angesehen. Wenn die Größe ungleich Null ist, wird die Datei als nicht leer angesehen.

Ich hoffe, diese Beispiele haben Ihnen ein gutes Verständnis für die verschiedenen Möglichkeiten gegeben, um zu überprüfen. Wie Sie sehen können, gibt es viele verschiedene Ansätze zur Auswahl, und das Beste hängt von Ihren spezifischen Anforderungen und den Tools ab, die in Ihrem System verfügbar sind.