logo

Bash Scripting – Hvordan sjekke om filen eksisterer

I denne artikkelen vil vi skrive et bash-skript for å sjekke om filer eksisterer eller ikke.

Syntaks:

  • test [uttrykk]
  • [ uttrykk ]
  • [[ uttrykk ]]

Her, i uttrykk, skriver vi parameter og filnavn . La oss se noen parametere som kan brukes i uttrykket: -

  • f: Den returnerer True hvis filen eksisterer som en vanlig (vanlig) fil.
  • -d : den returnerer True hvis katalogen eksisterer. -e : Den returnerer True hvis det finnes en filtype. -c : Den returnerer True hvis tegnfilen eksisterer. -r : Den returnerer True hvis det finnes en lesbar fil.
  • I : Den returnerer True hvis det finnes en skrivbar fil .
  • -x : Den returnerer True hvis det finnes en kjørbar fil. -p : Den returnerer True hvis filen eksisterer som en pipe. -S : Den returnerer True hvis filen eksisterer som en socket. -s : den returnerer True hvis en fil eksisterer og størrelsen på filen ikke er null. -L : Den returnerer True hvis filen med symbolsk lenke eksisterer . -g : Den returnerer True hvis filen eksisterer og hold set group id-flagget er satt. -G : Jeg t returnerer True hvis filen eksisterer og har samme gruppe-ID som er under behandling. -k : Den returnerer True hvis filen eksisterer og sticky bit-flagget er satt.

Nå er det noen flere parametere for sammenligning mellom de to filene.



    -ef: Den returnerer True hvis begge filene eksisterer og indikerer den samme filen.

Eksempel:

FirstFile -ef SecondFile>
    -nt: Den returnerer True hvis FirstFile er nyere enn Secondfile.

Eksempel:

string.substring java
FirstFile -nt FileOld>
    -ot: Den returnerer True hvis FirstFile er eldre enn SecondFile.

Eksempel:

FirstFile -ot SecondFile>

La oss ta noen eksempler basert på syntaks:

    [ uttrykk ]: Lag først en fil som heter FirstFile.sh og skriv følgende 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>

Lagre og kjør filen ved å bruke følgende kommando

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

Utgang:

Produksjon

Merk: Siden File.txt er tilstede i systemet. Så den utskrevne filen eksisterer .

    test [uttrykk]: Nå, endre skriptet ovenfor i FirstFile.sh som følger
#!/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>

Lagre og kjør filen igjen ved å bruke følgende kommando

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

Utgang:

Produksjon

Merk: Siden File2.txt ikke finnes i systemet. Så den trykte filen eksisterer ikke.

    [[ uttrykk ]]: Igjen endre skriptet ovenfor i FirstFile.sh som følger
#!/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>

Lagre og kjør filen igjen med følgende kommando

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

Utgang:

Produksjon

Merk: Siden File3.txt er tilstede i systemet. Så den utskrevne filen finnes .

La oss se et eksempel basert på parametere:

    Bruke -d parameter: Lag en fil som heter FirstDir.sh og skriv følgende 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>

Nå Lagre og kjør filen ved å bruke følgende kommando

hvordan endre streng til int
$ chmod +x ./FirstDir.sh $ ./FirstDir.sh>

Utgang:

Produksjon

Merk: Siden GFG_dir er tilstede i systemet. Så den trykte katalogen eksisterer.

På samme måte kan du bruke -f , -Det er , -I , -r , -c ,etc. (i henhold til deres bruk) i stedet for -d for å sjekke eksistensen av forskjellige typer filer.

La oss se et eksempel basert på en sammenligning av to filer:

  • Ved hjelp av -nt parameter

Opprett et filnavn Comparison_File.sh og skriv følgende 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>

Nå Lagre og kjør filen ved å bruke følgende kommando

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

Utgang:

Produksjon

Merk: Siden begge filene finnes i systemet og New_File.txt er nyere enn Old_File.txt

La oss se eksempelet Sjekk om fil ikke eksisterer:

Opprett en fil med navnet Check_Exist.sh og skriv følgende 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>

Nå Lagre og kjør filen ved å bruke følgende kommando

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

Utgang:

Produksjon

som fant opp skolen

Merk: GFG.txt finnes ikke i systemet. Så den vil skrive ut Filen eksisterer ikke

La oss se et eksempel uten å bruke If-else-betingelsen:

Lag en fil som heter Geeks_File.sh og skriv følgende 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'>

Nå Lagre og kjør filen ved å bruke følgende kommando

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

Utgang:

Produksjon

Merk: Siden GFG_File.txt er tilstede i systemet. Så den utskrevne filen finnes .