logo

Bash Scripting – Cum să verificați dacă fișierul există

În acest articol, vom scrie un script bash pentru a verifica dacă fișierele există sau nu.

Sintaxa:

  • test [expresie]
  • [expresie]
  • [[ expresie ]]

Aici, în exprimare, scriem parametru și nume de fișier . Să vedem câțiva parametri care pot fi utilizați în expresie: –

  • f: Returnează True dacă fișierul există ca fișier comun (obișnuit).
  • -d: returnează True dacă directorul există. -e : returnează True dacă există orice tip de fișier. -c : returnează True dacă fișierul de caractere există. -r : returnează True dacă există un fișier care poate fi citit.
  • În : returnează True dacă există un fișier care poate fi scris .
  • -x : returnează True dacă există un fișier executabil. -p : returnează True dacă fișierul există ca conductă. -S : returnează True dacă fișierul există ca socket. -s : returnează True dacă există un fișier și dimensiunea fișierului nu este zero. -L : returnează True dacă există fișierul link-ului simbolic . -g : returnează True dacă fișierul există și ține apăsat set de flag ID grup este setat.. -G : eu t returnează True dacă fișierul există și deține același ID de grup care este în proces. -k : returnează True dacă fișierul există și steag-ul de biți sticky este setat.

Acum, mai există câțiva parametri pentru comparație între cele două fișiere.



    -ef: returnează True dacă ambele fișiere există și indică același fișier.

Exemplu:

FirstFile -ef SecondFile>
    -nt: returnează True dacă FirstFile este mai nou decât Secondfile.

Exemplu:

log4j
FirstFile -nt FileOld>
    -ot: returnează True dacă FirstFile este mai vechi decât SecondFile.

Exemplu:

FirstFile -ot SecondFile>

Să luăm câteva exemple bazate pe sintaxă:

    [ expresie ]: Mai întâi, creați un fișier numit FirstFile.sh și scrieți următorul script pe el
#!/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>

Acum salvați și rulați fișierul folosind următoarea comandă

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

Ieșire:

Ieșire

Notă: Deoarece File.txt este prezent în sistem. Deci, a tipărit Fișierul există.

greierul meu
    test [expresie]: Acum, modificați scriptul de mai sus în FirstFile.sh după cum urmează
#!/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>

Acum, salvați din nou și rulați fișierul folosind următoarea comandă

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

Ieșire:

Ieșire

Notă: Deoarece File2.txt nu este prezent în sistem. Deci, fișierul tipărit nu există.

    [[ expresie ]]: modificați din nou scriptul de mai sus în FirstFile.sh, după cum urmează
#!/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>

Acum, salvați din nou și rulați fișierul folosind următoarea comandă

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

Ieșire:

Ieșire

Notă: Deoarece File3.txt este prezent în sistem. Deci, fișierul tipărit există.

Să vedem un exemplu bazat pe parametri:

    Folosind parametrul -d: creați un fișier numit FirstDir.sh și scrieți următorul script în el
!/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>

Acum Salvați și rulați fișierul folosind următoarea comandă

convertiți șirul în int în java
$ chmod +x ./FirstDir.sh $ ./FirstDir.sh>

Ieșire:

Ieșire

Notă: Deoarece GFG_dir este prezent în sistem. Deci, directorul tipărit există.

În mod similar, puteți utiliza -f , -Este , -În , -r , -c ,etc. ( conform utilizărilor lor ) în loc de -d pentru verificarea existenţei diferitelor tipuri de fişiere.

Să vedem un exemplu bazat pe o comparație a două fișiere:

  • Folosind -nt parametru

Creați un nume de fișier Comparison_File.sh și scrieți următorul script

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

Acum Salvați și rulați fișierul folosind următoarea comandă

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

Ieșire:

Ieșire

Notă: Deoarece ambele fișiere sunt prezente în sistem și New_File.txt este mai nou decât Old_File.txt

Să vedem exemplul Verificați dacă fișierul nu există:

Creați un fișier numit Check_Exist.sh și scrieți următorul script în el

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

Acum Salvați și rulați fișierul folosind următoarea comandă

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

Ieșire:

Ieșire

Notă: GFG.txt nu este prezent în sistem. Deci, se va imprima Fișierul nu există

Să vedem un exemplu fără a folosi condiția If-else :

Creați un fișier numit Geeks_File.sh și scrieți următorul script în el

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

Acum Salvați și rulați fișierul folosind următoarea comandă

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

Ieșire:

str.substring în java

Ieșire

Notă: Deoarece GFG_File.txt este prezent în sistem. Deci, fișierul tipărit există.