logo

Bash Scripting – So überprüfen Sie, ob eine Datei vorhanden ist

In diesem Artikel schreiben wir ein Bash-Skript, um zu überprüfen, ob Dateien vorhanden sind oder nicht.

Syntax :

  • Test [Ausdruck]
  • [ Ausdruck ]
  • [[ Ausdruck ]]

Hier schreiben wir im Ausdruck Parameter Und Dateiname . Sehen wir uns einige Parameter an, die im Ausdruck verwendet werden können: –

  • F: Es gibt True zurück, wenn die Datei als allgemeine (reguläre) Datei existiert.
  • -d: Gibt „True“ zurück, wenn ein Verzeichnis vorhanden ist. -e: Gibt True zurück, wenn ein Dateityp vorhanden ist. -c: Gibt True zurück, wenn die Zeichendatei vorhanden ist. -r: Gibt True zurück, wenn eine lesbare Datei vorhanden ist.
  • In : Gibt True zurück, wenn eine beschreibbare Datei vorhanden ist .
  • -x: Gibt True zurück, wenn eine ausführbare Datei vorhanden ist. -p: Gibt True zurück, wenn die Datei als Pipe existiert. -S: Gibt True zurück, wenn die Datei als Socket existiert. -s: Gibt „True“ zurück, wenn eine Datei vorhanden ist und die Größe der Datei nicht Null ist. -L: Gibt „True“ zurück, wenn die Datei mit dem symbolischen Link vorhanden ist . -g: Gibt „True“ zurück, wenn die Datei vorhanden ist und das Flag „Hold Set Group ID“ gesetzt ist. -G: ICH t gibt „True“ zurück, wenn die Datei existiert und dieselbe Gruppen-ID enthält, die gerade verarbeitet wird. -k: Gibt „True“ zurück, wenn die Datei existiert und das Sticky-Bit-Flag gesetzt ist.

Nun gibt es noch einige weitere Parameter zum Vergleich zwischen den beiden Dateien.



    -ef: Gibt „True“ zurück, wenn beide Dateien vorhanden sind und auf dieselbe Datei hinweisen.

Beispiel :

FirstFile -ef SecondFile>
    -nt: Gibt True zurück, wenn FirstFile neuer als Secondfile ist.

Beispiel :

Java-Escape-Zeichen
FirstFile -nt FileOld>
    -ot: Gibt True zurück, wenn FirstFile älter als SecondFile ist.

Beispiel:

FirstFile -ot SecondFile>

Nehmen wir einige Beispiele basierend auf der Syntax:

    [Ausdruck]: Erstellen Sie zunächst eine Datei mit dem Namen FirstFile.sh und schreiben Sie das folgende Skript darauf
#!/bin/bash # using [ expression ] syntax and in place # of File.txt you can write your file name if [ -f 'File.txt' ]; then # if file exist the it will be printed echo 'File is exist' else # is it is not exist then it will be printed echo 'File is not exist' fi>

Speichern Sie nun die Datei und führen Sie sie mit dem folgenden Befehl aus

$ chmod +x ./FirstFile.sh $ ./FirstFile.sh>

Ausgabe :

Ausgabe

Notiz: Da die Datei.txt im System vorhanden ist. Es wurde also „File is exist“ ausgegeben.

Alphabet mit Zahlen
    test [Ausdruck]: Ändern Sie nun das obige Skript in FirstFile.sh wie folgt
#!/bin/bash # using test expression syntax and in place # of File2.txt you can write your file name if test -f 'File2.txt' ; then # if file exist the it will be printed echo 'File is exist' else # is it is not exist then it will be printed echo 'File is not exist' fi>

Speichern Sie die Datei nun erneut und führen Sie sie mit dem folgenden Befehl aus

$ chmod +x ./FirstFile.sh $ ./FirstFile.sh>

Ausgabe :

Ausgabe

Notiz: Da File2.txt nicht im System vorhanden ist. Es wurde also „File is not exist“ ausgegeben.

    [[Ausdruck]]: Ändern Sie das obige Skript in FirstFile.sh erneut wie folgt
#!/bin/bash # using [[ expression ]] syntax and in place # of File3.txt you can write your file name if test -f 'File3.txt' ; then # if file exist the it will be printed echo 'File is exist' else # is it is not exist then it will be printed echo 'File is not exist' fi>

Speichern Sie die Datei nun erneut und führen Sie sie mit dem folgenden Befehl aus

 $ chmod +x ./FirstFile.sh $ ./FirstFile.sh>

Ausgabe :

Ausgabe

Notiz: Da die File3.txt im System vorhanden ist. Es wurde also „File is exist“ ausgegeben.

Sehen wir uns ein Beispiel basierend auf Parametern an:

    Verwenden des Parameters -d: Erstellen Sie eine Datei mit dem Namen FirstDir.sh und schreiben Sie das folgende Skript hinein
!/bin/bash if [[ -d 'GFG_dir' ]] ; # Here GFG_dir is directory and in place of GFG_dir you can write your Directory name then echo 'Directory is exist' # If GFG_dir exist then it will be printed else echo 'Directory is not exist' # If GFG_dir is not exist then it will be printed fi>

Speichern Sie nun die Datei und führen Sie sie mit dem folgenden Befehl aus

Python sortiert Tupel
$ chmod +x ./FirstDir.sh $ ./FirstDir.sh>

Ausgabe :

Ausgabe

Notiz: Da das GFG_dir im System vorhanden ist. Es wurde also „Directory is exist“ gedruckt.

Ebenso können Sie verwenden -F , -Es ist , -In , -R , -C ,usw. (je nach Verwendungszweck) anstelle von -D zur Überprüfung der Existenz verschiedener Dateitypen.

Sehen wir uns ein Beispiel an, das auf einem Vergleich zweier Dateien basiert:

  • Benutzen -nt Parameter

Erstellen Sie eine Datei mit dem Namen „Vergleich_Datei.sh“ und schreiben Sie das folgende Skript

#!/bin/bash # New_file.txt and Old_File.txt are names of two files. if [[ 'New_File.txt' -nt 'Old_File.txt' ]] ; then # This will be printed if Condition is true echo 'New_File.txt is newer than Old_File.txt' else # This will be printed if Condition is False echo 'New_File.txt is not newer than Old_File.txt' fi>

Speichern Sie nun die Datei und führen Sie sie mit dem folgenden Befehl aus

 $  chmod +x ./Comparison_File.sh $ ./Comparison_File.sh>

Ausgabe :

Ausgabe

Notiz: Da beide Dateien im System vorhanden sind und New_File.txt neuer als Old_File.txt ist

Sehen wir uns das Beispiel „Überprüfen, ob die Datei nicht existiert“ an:

Erstellen Sie eine Datei mit dem Namen Check_Exist.sh und schreiben Sie das folgende Skript hinein

#!/bin/bash # using ! before -f parameter to check if # file does not exist if [[ ! -f 'GFG.txt' ]] ; then # This will printed if condition is True echo 'File is not exist' else # This will be printed if condition is False echo 'File is exist' fi>

Speichern Sie nun die Datei und führen Sie sie mit dem folgenden Befehl aus

 $ chmod +x ./Check_Exist.sh $  ./Check_Exist.sh>

Ausgabe :

Ausgabe

Notiz: GFG.txt ist nicht im System vorhanden. Daher wird die Meldung „Datei ist nicht vorhanden“ angezeigt

Sehen wir uns ein Beispiel ohne Verwendung der If-else-Bedingung an:

Erstellen Sie eine Datei mit dem Namen Geeks_File.sh und schreiben Sie das folgende Skript hinein

#!/bin/bash # If File exist then first statement will be # printed and if it is not exist then 2nd # statement will be printed. [ -f 'GFG_File.txt' ] && echo 'File is exist' || echo 'File is not exist'>

Speichern Sie nun die Datei und führen Sie sie mit dem folgenden Befehl aus

 $ chmod +x ./Geeks_File.sh $ ./Geeks_File.sh>

Ausgabe :

Alphabet und Zahlen

Ausgabe

Notiz: Da die GFG_File.txt im System vorhanden ist. Es wurde also „File is exist“ ausgegeben.