GNU/Linux >> Tutoriels Linux >  >> Linux

Comment vérifier si un fichier ou un répertoire existe dans Bash

Présentation

Il existe plusieurs fonctions sous Linux qui ne fonctionnent que si un fichier ou un répertoire particulier existe. Bash est un shell qui interprète les commandes. Vous pouvez utiliser un

Dans ce guide, découvrez comment utiliser une commande bash pour vérifier si un fichier ou un répertoire existe.

Prérequis

  • Un système d'exploitation Linux
  • Accès à une fenêtre de terminal / ligne de commande (Ctrl-Alt-T / Ctrl-Alt-F2)

Comment vérifier si un fichier existe

Pour tester le fichier /tmp/test.log , saisissez ce qui suit à partir de la ligne de commande :

test –f /tmp/test.txt

La première ligne exécute le test pour voir si le fichier existe. La deuxième commande, echo , affiche les résultats 0 signifiant que le fichier existe, 1 signifie qu'aucun fichier n'a été trouvé.

echo $?

Dans notre exemple, le résultat était 1.

Essayez maintenant de créer un fichier, puis testez-le :

touch /tmp/test.txt
test –f /tmp/test.txt
echo $?

Comme nous avons créé le fichier au préalable, le résultat est maintenant 0 :

Vous pouvez également utiliser des crochets au lieu du test commande :

[ –f /tmp/test.txt ]
echo $?

Comment vérifier si un répertoire existe

Pour vérifier si un répertoire existe, désactivez le –f option sur le test commande pour –d (pour le répertoire) :

test –d /tmp/test
echo $?

Créez ce répertoire et relancez le test :

touch /tmp/test
test –d /tmp/test
echo $?

Cette commande fonctionne de la même manière que pour les fichiers, donc en utilisant des crochets au lieu du test la commande fonctionne ici aussi.

Comment vérifier si un fichier n'existe pas

Généralement, le test d'un fichier renvoie 0 (vrai) si le fichier existe et 1 (faux) si le fichier n'existe pas. Pour certaines opérations, vous souhaiterez peut-être inverser la logique. Il est utile d'écrire un script pour créer un fichier particulier uniquement s'il n'existe pas déjà.

Pour créer un fichier s'il n'en existe pas déjà, saisissez ce qui suit sur une ligne de commande :

[ ! –f /tmp/test.txt ] && touch /tmp/test.txt

Le point d'exclamation  ! signifie pas . Cette commande s'assure qu'il n'y a pas un fichier nommé test.txt dans le /tmp annuaire. Vous ne verrez rien se passer.

Pour voir si le système a créé le fichier, saisissez ce qui suit :

ls /tmp

Vous devriez voir test.txt listé. Vous pouvez utiliser une commande similaire pour un répertoire - remplacez le –f option avec –d :

[ ! –d /tmp/test ] && touch /tmp/test 

Comment vérifier plusieurs fichiers

Pour tester deux fichiers en même temps, utilisez le && possibilité d'ajouter un second fichier :

[ -f /tmp/test.txt && -f /tmp/sample.txt ] && echo “Both files were found”

Pour tester plusieurs fichiers avec un caractère générique, comme un astérisque * pour représenter divers caractères :

[ -f /tmp/*.jpg ] && echo “Files were found”

Comme d'habitude, changer le –f option sur –d vous permet d'exécuter le même test pour plusieurs répertoires.

Opérateurs de test de fichiers pour trouver des types de fichiers particuliers

Voici plusieurs commandes à tester pour trouver des types de fichiers spécifiques :

  • -f – fichier
  • -d – répertoire
  • L – lien symbolique
  • -r – lisible
  • -x – exécutable
  • w – inscriptible

Il existe de nombreuses autres options disponibles. Veuillez consulter la page principale (test ––aide) pour des options supplémentaires.

Travailler avec des extraits de code

Les commandes précédentes fonctionnent bien pour une simple commande à deux lignes à une invite de commande. Vous pouvez également utiliser bash avec plusieurs commandes. Lorsque plusieurs commandes sont enchaînées, elles sont appelées un script .

Un script est généralement enregistré sous forme de fichier et exécuté. Le script utilise également des opérateurs logiques pour tester une condition, puis agit en fonction des résultats du test.

Pour créer un fichier de script, utilisez l'éditeur Nano pour ouvrir un nouveau fichier :

sudo nano bashtest.sh

Entrez l'un des extraits ci-dessous, y compris le #!/bin/bash identifiant. Utilisez Ctrl-o pour enregistrer le fichier, puis Ctrl-x pour quitter Nano. Ensuite, lancez le script en saisissant :

bash bashtest.sh

L'extrait de code suivant teste la présence d'un fichier particulier. Si le fichier existe, le script affiche Le fichier existe à l'écran.

#!/bin/bash

if [ -f /tmp/test.txt ]

then

echo “File exists”

fi

Cela fonctionne de la même manière si vous recherchez un répertoire. Remplacez simplement le –f option avec –d :

#!/bin/bash

if [ -d /tmp/test ]

then 

echo “File exists”

fi

Cette commande recherche le répertoire /tmp/test . S'il existe, le système affiche Le fichier existe .


Linux
  1. Vérifier si un certain type de fichier/extension existe dans le répertoire

  2. Comment vérifier syslog dans Bash sous Linux ?

  3. Comment vérifier si un fichier est vide dans Bash ?

  4. Comment vérifier si un fichier existe dans un répertoire spécifique dans un script bash ?

  5. Bash :Aucun fichier ou répertoire de ce type ?

Ansible :vérifier si un fichier existe

Comment vérifier si un fichier ou un répertoire existe dans Bash

Comment lire un fichier ligne par ligne dans Bash

Comment utiliser les opérateurs de test de fichiers Bash sous Linux

Comment vérifier si un fichier ou un répertoire existe dans Bash Shell

Comment obtenir le répertoire absolu d'un fichier dans bash ?