5 sposobów sprawdzenia, czy plik jest pusty w Bash

5 sposobów sprawdzenia, czy plik jest pusty w Bash

W systemie Linux pusty plik to plik o wielkości zerowych bajtów. Oznacza to, że plik nie zawiera żadnych danych i nie ma żadnej treści, gdy jest otwarty w edytorze tekstu. Pusty plik można utworzyć za pomocą polecenia Touch: „Dotknij myfile.tekst'

To utworzy pusty plik o nazwie Myfile.TXT w bieżącym katalogu. Możesz także utworzyć pusty plik za pomocą polecenia ECHO z operatorem>: 'echo> myfile.tekst'

To zastąpi wszelką istniejącą treść w pliku za pomocą pustego ciągu, skutecznie tworząc pusty plik.

Metoda sprawdzania, czy plik jest pusty w Bash

Istnieje kilka różnych sposobów sprawdzenia, czy plik jest pusty w BASH, w zależności od konkretnych potrzeb i narzędzi dostępnych w systemie. W tym artykule przyjrzymy się pięciu różnych podejść do sprawdzenia, czy plik jest pusty w Bash.

  1. Używając 'test' polecenie lub „[”
  2. 'test' polecenie (które jest aliasem dla '[„Polecenie) to proste i szeroko dostępne narzędzie do wykonywania różnych testów plików i innych obiektów w Bash. Aby sprawdzić, czy plik jest pusty za pomocą „[”, możesz użyć '-S' Opcja, która sprawdza rozmiar pliku:

    #!/usr/bin/env bash nazwa nazwa Myfile.txt # Sprawdź, czy plik jest pusty, czy [ ! -s "$ filename"]; wtedy echo „plik jest pusty” plik else echo ”nie jest pusty” fi
    12345678910#!/usr/bin/env bash nazwa nazwa Myfile.txt # Sprawdź, czy plik jest pusty [ ! -s "$ filename"]; wtedy echo „plik jest pusty” plik else echo ”nie jest pusty” fi

    Zauważ, że '-S' Opcja rozważa plik jako pusty, jeśli jego rozmiar wynosi zero, ale nie sprawdza obecności ukrytych znaków ani białej listy. Jeśli chcesz sprawdzić całkowicie pusty plik (i.mi., taki, który zawiera tylko białe znak lub nie ma żadnych linii), możesz użyć „-z” Opcja, która sprawdza, czy ciąg jest pusty:

    #!/usr/bin/env bash nazwa nazwa Myfile.txt [-z "$ (cat $ nazwa pliku)"] Następnie plik echo „plik jest pusty„ else echo ”plik nie jest pusty” FI
    123456789#!/usr/bin/env bash nazwa nazwa Myfile.txt [-z "$ (cat $ nazwa pliku)"] Następnie plik echo „plik jest pusty„ else echo ”plik nie jest pusty” FI

    To odczytuje zawartość pliku i przekazuje je do polecenia testowego jako ciąg. Jeśli ciąg jest pusty, plik jest uważany za pusty.

    Możesz również sprawdzić pliki istniejące przed testowaniem pustego pliku. Poniższy skrypt sprawdzi, czy plik istnieje i czy plik jest pusty, czy nie.

    #!/usr/bin/env bash nazwa nazwa Myfile.txt if [-f "$ nazwa pliku"]; to jeśli [-s "$ nazwa pliku"]; następnie echo "plik $ fileName istnieje i nie pusta„ else echo ”$ nazwa pliku istnieje, ale pusta jest pusta, ale pusta jest pusta, ale pusta jest pusta „fi else echo” plik $ nazwa pliku nie istnieje ”FI
    12345678910111213#!/usr/bin/env bash nazwa nazwa Myfile.txt if [-f "$ nazwa pliku"]; to jeśli [-s "$ nazwa pliku"]; następnie echo "plik $ fileName istnieje i nie pusta„ else echo ”$ nazwa pliku istnieje, ale pusta jest pusta, ale pusta jest pusta, ale pusta jest pusta „Fielse Echo” plik $ nazwa pliku nie istnieje ”FI

    Zgodnie z powyższym przykładem, jeśli mój plik.tekst nie istnieje, skrypt wyświetli dane wyjściowe jako „plik nie istnieje”, a jeśli plik istnieje i jest pustym plik, wówczas wyświetli dane wyjściowe jako „plik istnieje, ale pusty”, w przeciwnym razie, jeśli plik istnieje, ma pewną zawartość w nim Pokaż wyjście jako „Plik istnieje i nie jest pusty”.

  3. Korzystanie z polecenia WC
  4. 'toaleta' (Liczba słów) Polecenie to kolejne narzędzie, którego można użyć do sprawdzenia, czy plik jest pusty w Bash. Aby sprawdzić liczbę linii w pliku, możesz użyć „-l” opcja:

    #!/usr/bin/env bash nazwa nazwa Myfile.txt # Sprawdź, czy plik ma jakieś wiersze, czy [$ (wc -l < "$FILENAME") -eq 0 ]; then echo "File $FILENAME is empty" else echo "File $FILENAME is not empty" fi
    12345678910#!/usr/bin/env bash nazwa nazwa Myfile.txt # Sprawdź, czy plik ma jakieś wiersze [$ (wc -l < "$FILENAME") -eq 0 ]; then echo "File $FILENAME is empty"else echo "File $FILENAME is not empty"fi

    To przekazuje zawartość pliku do 'toaleta' polecenie jako standardowe wejście i „-l” Opcja będzie liczyć liczbę linii. Jeśli liczba linii wynosi zero, plik jest uważany za pusty.

  5. Korzystanie z polecenia GREP
  6. „Grep” Polecenie jest potężnym narzędziem do wyszukiwania i przetwarzania plików tekstowych. Aby sprawdzić, czy plik jest pusty za pomocą GREP, możesz użyć '-Q' Opcja, która powoduje, że GREP działa cicho i zwraca kod wyjściowy:

    #!/usr/bin/env bash nazwa nazwa Myfile.txt, jeśli grep -q . "$ FileName"; wtedy echo „plik nie jest pusty„ else echo ”plik jest pusty” fi
    123456789#!/usr/bin/env bash nazwa nazwa Myfile.txt, jeśli grep -q . "$ FileName"; wtedy echo „plik nie jest pusty„ else echo ”plik jest pusty” fi

    To przeszuka plik dowolnego znaku (. jest wyrażeniem regularnym, które pasuje do dowolnej postaci) i zwraca kod zerowego wyjścia, jeśli zostanie znaleziony dopasowanie lub niezerowy kod wyjściowy, jeśli plik jest pusty.

    Korzystanie z polecenia Znajdź

    'znajdować' Polecenie jest narzędziem do wyszukiwania i przetwarzania plików i katalogów. Aby sprawdzić, czy plik jest pusty za pomocą Find, możesz użyć opcji -EMPTY, która pasuje do pustych plików:

    #!/usr/bin/env bash nazwa nazwa Myfile.txt, jeśli znajdź . -typ f -EMPY -name "$ filename"; wtedy echo „plik jest pusty” plik else echo ”nie jest pusty” fi
    12345678#!/usr/bin/env bash nazwa nazwa Myfile.txtif Znajdź . -typ f -EMPY -name "$ filename"; wtedy echo „plik jest pusty” plik else echo ”nie jest pusty” fi

    To będzie przeszukiwać bieżący katalog (.) dla plików (-Type f) które są puste (-pusty) i miej nazwę "mój plik.tekst" (-name „myfile.tekst"). Jeśli zostanie znalezione dopasowanie, polecenie Znajdź zwróci kod zerowego wyjścia, wskazując, że plik jest pusty. Jeśli nie zostanie znalezione dopasowanie, polecenie Find zwróci niezerowy kod wyjściowy, wskazując, że plik nie jest pusty.

    Korzystanie z polecenia STAT

    „Stat” Polecenie to narzędzie do wyświetlania informacji o plikach i systemach plików. Aby sprawdzić, czy plik jest pusty za pomocą STAT, możesz użyć opcji -C, aby wyświetlić rozmiar pliku w bajtach:

    #!/usr/bin/env bash nazwa nazwa Myfile.txt if [$ (stat -c %s "$ filename") -eq 0]; wtedy echo „plik jest pusty” plik else echo ”nie jest pusty” fi
    12345678#!/usr/bin/env bash nazwa nazwa Myfile.txtif [$ (stat -c %s "$ nazwa pliku") -eq 0]; wtedy echo „plik jest pusty” plik else echo ”nie jest pusty” fi

    To przekazuje rozmiar pliku do „[” polecenie, które porównuje to do zera. Jeśli rozmiar wynosi zero, plik jest uważany za pusty. Jeśli rozmiar jest niezerowy, plik jest uważany za pusty.

Mam nadzieję, że te przykłady dały ci dobre zrozumienie różnych sposobów sprawdzenia, czy plik jest pusty w Bash. Jak widać, istnieje wiele różnych podejść do wyboru, a najlepszy będzie zależeć od twoich konkretnych potrzeb i narzędzi dostępnych w systemie.