logo

Bash Scripting – Comment vérifier si le fichier existe

Dans cet article, nous allons écrire un script bash pour vérifier si les fichiers existent ou non.

Syntaxe :

  • tester [expression]
  • [ expression ]
  • [[ expression ]]

Ici, en expression, nous écrivons paramètre et nom de fichier . Voyons quelques paramètres qui peuvent être utilisés dans l'expression : –

  • F: Il renvoie True si le fichier existe en tant que fichier commun (normal).
  • -d : il renvoie True si le répertoire existe. -e : Il renvoie True si un type de fichier existe. -c : Il renvoie True si le fichier de caractères existe. -r : Il renvoie True si un fichier lisible existe.
  • Dans : Il renvoie True si un fichier inscriptible existe .
  • -x : Il renvoie True si un fichier exécutable existe. -p : Il renvoie True si le fichier existe sous forme de tube. -S : Il renvoie True si le fichier existe en tant que socket. -s : il renvoie True si un fichier existe et que la taille du fichier n'est pas nulle. -L : Il renvoie True si le fichier de lien symbolique existe . -g : Il renvoie True si le fichier existe et que l'indicateur d'identification de groupe défini est défini. -G : je t renvoie True si le fichier existe et contient le même identifiant de groupe que celui en cours. -k : Il renvoie True si le fichier existe et que l'indicateur de bit collant est défini.

Il existe désormais quelques paramètres supplémentaires pour la comparaison entre les deux fichiers.



    -ef : Il renvoie True si les deux fichiers existent et indiquent le même fichier.

Exemple :

FirstFile -ef SecondFile>
    -nt : il renvoie True si FirstFile est plus récent que Secondfile.

Exemple :

java est une instance de
FirstFile -nt FileOld>
    -ot : il renvoie True si FirstFile est plus ancien que SecondFile.

Exemple:

FirstFile -ot SecondFile>

Prenons quelques exemples basés sur la syntaxe :

    [ expression ] : Tout d'abord, créez un fichier nommé FirstFile.sh et écrivez dessus le script suivant
#!/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>

Maintenant, enregistrez et exécutez le fichier à l'aide de la commande suivante

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

Sortir :

Sortir

Note: Comme le File.txt est présent dans le système. Donc, il a imprimé Le fichier existe.

    test [expression] : Maintenant, modifiez le script ci-dessus dans FirstFile.sh comme suit
#!/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>

Maintenant, enregistrez à nouveau et exécutez le fichier à l'aide de la commande suivante

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

Sortir :

Sortir

Note: Comme le File2.txt n'est pas présent dans le système. Donc, il a imprimé File is not exist .

    [[ expression ]] : modifiez à nouveau le script ci-dessus dans FirstFile.sh comme suit
#!/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>

Maintenant, enregistrez à nouveau et exécutez le fichier à l'aide de la commande suivante

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

Sortir :

Sortir

Note: Comme le File3.txt est présent dans le système. Donc, il a imprimé Le fichier existe.

Voyons un exemple basé sur des paramètres :

    Utilisation du paramètre -d : créez un fichier nommé FirstDir.sh et écrivez-y le script suivant
!/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>

Maintenant, enregistrez et exécutez le fichier à l'aide de la commande suivante

séquence de fibonacci java
$ chmod +x ./FirstDir.sh $ ./FirstDir.sh>

Sortir :

Sortir

Note: Comme le GFG_dir est présent dans le système. Ainsi, le répertoire imprimé existe.

De la même manière, vous pouvez utiliser -F , -C'est , -Dans , -r , -c ,etc. (selon leurs usages) à la place de -d pour vérifier l'existence de différents types de fichiers.

Voyons un exemple basé sur une comparaison de deux fichiers :

  • En utilisant -NT paramètre

Créez un nom de fichier Comparison_File.sh et écrivez le script suivant

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

Maintenant, enregistrez et exécutez le fichier à l'aide de la commande suivante

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

Sortir :

Sortir

Note: Comme les deux fichiers sont présents dans le système et que New_File.txt est plus récent que Old_File.txt

tableau Java

Voyons l'exemple Vérifier si le fichier n'existe pas :

Créez un fichier nommé Check_Exist.sh et écrivez-y le script suivant

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

Maintenant, enregistrez et exécutez le fichier à l'aide de la commande suivante

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

Sortir :

Sortir

Note: GFG.txt n'est pas présent dans le système. Donc, il imprimera Le fichier n'existe pas

Voyons un exemple sans utiliser la condition If-else :

Créez un fichier nommé Geeks_File.sh et écrivez-y le script suivant

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

Maintenant, enregistrez et exécutez le fichier à l'aide de la commande suivante

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

Sortir :

Sortir

Note: Comme le GFG_File.txt est présent dans le système. Donc, il a imprimé Le fichier existe.