Année universitaire 2002-2003 |
|
Licence d'informatique
Module 4 - partie "C / shell"
Travaux pratiques 10 :
1. La commande find.
2. Exercice : affichage d'une arborescence.
|
1. La commande find.
Caractéristiques :
- find signifie "trouver".
- Cette commande permet de rechercher, de manière récursive, les sous-répertoires et fichiers
situés dans un répertoire passé en paramètre, et dont le nom (relatif au répertoire courant)
correspond à un certain modèle. Un nom (relatif au répertoire courant) de sous-répertoire
ou de fichier est affiché par ligne.
- Elle peut apparaître en début de
branchement.
Syntaxe :
find nom_répertoire [...] -name "modèle_nom"
Description :
cf. la description de la commande find,
en tapant : man find
Exemple :
Cette commande affiche les noms de sous-répertoires et de fichiers qui sont des
"descendants" du répertoire courant, et dont les noms comportent six caractères exactement.
Codes de retour :
- Pas d'erreur : 0
- Opération interrompue pour cause d'erreur : > 0
Remarque :
La commande find . -name "core" -exec rm {}\; permet de supprimer tous les
fichiers de nom core se trouvant dans la sous-arborescence du répertoire courant.
De manière générale, taper find nom_répertoire -name "modèle_nom" -exec commande {}\;
revient à appliquer la commande commande aux fichiers dont les noms correspondent
à modèle_nom et qui se trouvent dans la sous-arborescence de nom_répertoire.
2. Exercice.
Écrire le script arbre.sh permettant de dessiner
à l'écran la sous-arborescence d'un répertoire passé
en paramètre, et ce sous la forme suivante :
$ arbre.sh TEST
TEST
+- FILS1
| +- S_FILS11
| +- S_FILS12
| | +- SS_FILS121
| +- S_FILS13
| +- SS_FILS131
| +- SS_FILS132
+- FILS2
| +- S_FILS21
+- FILS3
+- S_FILS31
$ |
Remarque :
Cet exemple pourra être préalablement construit, de
manière à tester le script.
On conseille de tenir compte des indications suivantes :
- Écrire le script de base permettant
d'afficher tous les sous-répertoires d'un répertoire donné
en paramètre (quel que soit le niveau des sous-répertoires
dans l'arborescence).
- Considérer que le script arbre.sh
peut être appelé soit avec un seul paramètre, soit
avec deux paramètres :
- Lorsque l'utilisateur lance le script, il ne passe qu'un seul paramètre,
qui est le nom d'un répertoire.
- Lors de l'appel (ou des appels) récursif(s) du script, le
script est appelé avec deux paramètres. Le second paramètre
est une chaîne de caractères (entre guillemets) qui doit être
affichée devant le nom d'un sous-répertoire. Cette chaîne
de caractères est composée d'espaces, de caractères
| et de caractères +
- On devra gérer un compteur de sous-répertoires :
- Si le nombre de sous-répertoires est égal à
0, alors afficher le répertoire courant et
ne pas lancer d'appel récursif.
- Dans les autres cas, afficher le nom du sous-répertoire,
lancer l'appel récursif et décrémenter le compteur
de sous-répertoires.
Attention :
- Lorsque la valeur de ce compteur est égale à 1
(le sous-répertoire à afficher est le dernier), une gestion
spécifique de l'affichage doit être prévue.
- Tester si un répertoire est accessible en lecture et en exécution, avant
d'éventuellement lancer un appel récursif.
Ces pages ont été réalisées
par A. Crouzil, J.D. Durou et Ph. Joly.
Pour tout commentaire, envoyer un mail à
crouzil@irit.fr, à durou@irit.fr ou à Philippe.Joly@irit.fr.