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.