logo

Bash Scripting – Hur man kontrollerar om filen finns

I den här artikeln kommer vi att skriva ett bash-skript för att kontrollera om filer finns eller inte.

Syntax :

  • testa [uttryck]
  • [ uttryck ]
  • [[ uttryck ]]

Här, i uttryck, skriver vi parameter och filnamn . Låt oss se några parametrar som kan användas i uttrycket: –

  • f: Den returnerar True om filen finns som en vanlig (vanlig) fil.
  • -d : den returnerar True om katalogen finns. -e : Den returnerar True om någon typ av fil finns. -c : Den returnerar True om teckenfilen finns. -r : Den returnerar True om det finns en läsbar fil.
  • I : Den returnerar True om det finns en skrivbar fil .
  • -x : Den returnerar True om det finns en körbar fil. -p : Den returnerar True om filen finns som en pipe. -S : Den returnerar True om filen finns som en socket. -s : den returnerar True om det finns en fil och storleken på filen inte är noll. -L : Den returnerar True om filen med symbolisk länk finns . -g : Den returnerar True om filen finns och håll set group id-flaggan är inställd. -G : jag t returnerar True om filen finns och har samma grupp-id som är under bearbetning. -k : Den returnerar True om filen finns och sticky bit-flaggan är inställd.

Nu finns det några fler parametrar för jämförelse mellan de två filerna.



    -ef: Den returnerar True om båda filerna finns och indikerar samma fil.

Exempel:

FirstFile -ef SecondFile>
    -nt: Den returnerar True om FirstFile är nyare än Secondfile.

Exempel:

python-program för binär sökning
FirstFile -nt FileOld>
    -ot: Den returnerar True om FirstFile är äldre än SecondFile.

Exempel:

FirstFile -ot SecondFile>

Låt oss ta några exempel baserade på syntax:

    [ uttryck ]: Skapa först en fil med namnet FirstFile.sh och skriv följande skript på den
#!/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>

Spara och kör nu filen med följande kommando

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

Utgång:

Produktion

Notera: Eftersom File.txt finns i systemet. Så den utskrivna filen finns .

    testa [uttryck]: Ändra nu ovanstående skript i FirstFile.sh enligt följande
#!/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>

Spara och kör filen igen med följande kommando

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

Utgång:

Produktion

Notera: Eftersom File2.txt inte finns i systemet. Så den utskrivna filen finns inte .

    [[ uttryck ]]: Ändra skriptet ovan i FirstFile.sh igen enligt följande
#!/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>

Spara och kör filen igen med följande kommando

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

Utgång:

Produktion

Notera: Eftersom File3.txt finns i systemet. Så den utskrivna filen finns.

objekt för java

Låt oss se ett exempel baserat på parametrar:

    Använd parametern -d: Skapa en fil med namnet FirstDir.sh och skriv följande manus i den
!/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>

Spara nu och kör filen med följande kommando

python sortering tuplar
$ chmod +x ./FirstDir.sh $ ./FirstDir.sh>

Utgång:

Produktion

Notera: Eftersom GFG_dir finns i systemet. Så den tryckta katalogen finns.

På samma sätt kan du använda -f , -Det är , -I , -r , -c ,etc. (enligt deras användningsområden) i stället för -d för att kontrollera förekomsten av olika typer av filer.

Låt oss se ett exempel baserat på en jämförelse av två filer:

  • Använder sig av -nt parameter

Skapa ett filnamn Comparison_File.sh och skriv följande 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>

Spara nu och kör filen med följande kommando

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

Utgång:

Produktion

Notera: Eftersom båda filerna finns i systemet och New_File.txt är nyare än Old_File.txt

Låt oss se exemplet Kontrollera om filen inte finns:

Skapa en fil med namnet Check_Exist.sh och skriv följande manus i den

#!/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>

Spara nu och kör filen med följande kommando

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

Utgång:

Produktion

Notera: GFG.txt finns inte i systemet. Så det kommer att skrivas ut. Filen finns inte

Låt oss se ett exempel utan att använda If-else-villkoret:

Skapa en fil med namnet Geeks_File.sh och skriv följande skript i den

#!/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'>

Spara nu och kör filen med följande kommando

java int till sträng
 $ chmod +x ./Geeks_File.sh $ ./Geeks_File.sh>

Utgång:

Produktion

Notera: Eftersom GFG_File.txt finns i systemet. Så den utskrivna filen finns.