logo

Bash Scripting: come verificare se il file esiste

In questo articolo scriveremo uno script bash per verificare se i file esistono o meno.

Sintassi:

  • provare [espressione]
  • [espressione]
  • [[ espressione ]]

Qui, per espressione, scriviamo parametro E nome del file . Vediamo alcuni parametri che possono essere utilizzati nell'espressione: –

  • F: Restituisce True se il file esiste come file comune (normale).
  • -d: restituisce True se la directory esiste. -e: restituisce True se esiste qualsiasi tipo di file. -c: restituisce True se il file di caratteri esiste. -r : restituisce True se esiste un file leggibile.
  • In : Restituisce True se esiste un file scrivibile .
  • -x: restituisce True se esiste un file eseguibile. -p : Restituisce True se il file esiste come pipe. -S : Restituisce True se il file esiste come socket. -s : restituisce True se esiste un file e la dimensione del file non è zero. -L : Restituisce True se il file del collegamento simbolico esiste . -g : Restituisce True se il file esiste e se è impostato il flag set group id .. -G : IO t restituisce True se il file esiste e contiene lo stesso ID gruppo in elaborazione. -k : restituisce True se il file esiste e il flag sticky bit è impostato.

Ora ci sono alcuni parametri in più per il confronto tra i due file.



    -ef: restituisce True se esistono entrambi i file e indicano lo stesso file.

Esempio :

FirstFile -ef SecondFile>
    -nt: restituisce True se FirstFile è più recente di Secondfile.

Esempio :

caratteri di escape Java
FirstFile -nt FileOld>
    -ot: restituisce True se PrimoFile è più vecchio di SecondoFile.

Esempio:

FirstFile -ot SecondFile>

Prendiamo alcuni esempi basati sulla sintassi:

    [espressione]: innanzitutto crea un file denominato FirstFile.sh e scrivi su di esso il seguente script
#!/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>

Ora salva ed esegui il file utilizzando il seguente comando

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

Produzione :

Produzione

Nota: Poiché il File.txt è presente nel sistema. Quindi, il file stampato esiste.

    test [espressione]: ora modifica lo script precedente in FirstFile.sh come segue
#!/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>

Ora, salva nuovamente ed esegui il file utilizzando il seguente comando

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

Produzione :

Produzione

Nota: Poiché il File2.txt non è presente nel sistema. Quindi, è stato stampato File is not Exist .

    [[ espressione ]]: modifica nuovamente lo script precedente in FirstFile.sh come segue
#!/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>

Ora, salva nuovamente ed esegui il file utilizzando il seguente comando

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

Produzione :

Produzione

Nota: Poiché il File3.txt è presente nel sistema. Quindi, ha stampato File is esiste .

Vediamo un esempio basato sui parametri:

    Utilizzando il parametro -d: crea un file denominato FirstDir.sh e scrivi al suo interno il seguente script
!/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>

Ora salva ed esegui il file utilizzando il seguente comando

1 milione di numeri
$ chmod +x ./FirstDir.sh $ ./FirstDir.sh>

Produzione :

Produzione

Nota: Poiché GFG_dir è presente nel sistema. Quindi, è stata stampata la Directory che esiste.

Allo stesso modo, puoi usare -F , , -In , -R , -C ,eccetera. (secondo i loro usi) al posto di -D per verificare l'esistenza di diversi tipi di file.

Vediamo un esempio basato sul confronto di due file:

  • Utilizzando -nt parametro

Crea un nome file Comparison_File.sh e scrivi il seguente 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>

Ora salva ed esegui il file utilizzando il seguente comando

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

Produzione :

Produzione

Nota: Poiché entrambi i file sono presenti nel sistema e New_File.txt è più recente di Old_File.txt

elenco di array di ordinamento Java

Vediamo l'esempio Controlla se il file non esiste:

Crea un file denominato Check_Exist.sh e scrivi al suo interno il seguente script

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

Ora salva ed esegui il file utilizzando il seguente comando

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

Produzione :

Produzione

Nota: GFG.txt non è presente nel sistema. Quindi, stamperà Il file non esiste

Vediamo un esempio senza utilizzare la condizione If-else :

Crea un file denominato Geeks_File.sh e scrivi al suo interno il seguente script

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

Ora salva ed esegui il file utilizzando il seguente comando

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

Produzione :

Produzione

Nota: Poiché nel sistema è presente GFG_File.txt. Quindi, ha stampato File is esiste .