bonjour,
Je veux trouver tous les fichiers normaux d'un répertoire et de ses
sous-répertoire
# répertoire de recherche
/home/anne/toto/
avec la commande find je me retouve avec
/home/anne/toto/fich1
/home/anne/toto/fich2
/home/anne/toto/fich3
/home/anne/toto/rep1/fich4
/home/anne/toto/rep1/fich5
/home/anne/toto/rep2/fich6
/home/anne/toto/rep3/fich7
J'ai un répertoire /home/anne/titi/
Je veux vérifier si tous les fichiers qui sont dans toto existe dans
titi et ont le même contenu
J'ai fait un petit script bash
-----
#!/bin/bash
# repertoire recherche
repertdiff='/home/anne/resupt-rech/'
# repertoire old
listeold=( $(find /home/anne/toto -type f) )
# repertoire new
listenew='/home/anne/titi/'
nb_element=${#listeold[@]}
index=0
while [ "$index" -lt "$nb_element" ]
do # Liste tous les elements du tableau.
echo ${listeold[$index]}
# recherche du nom du fichier
nomfich=$(basename ${listeold[$index]} )
echo $nomfich
# nom fichier avec le repertoire titi
fichnew="$listenew$nomfich"
echo $fichnew
# nom de fichier pour la recherche du diff
fichrech="$repertdiff$nomfich"
# diff
diff ${listeold[$index]} $fichnew > $fichrech
let "index = $index + 1"
# ou index+=1 avec Bash 3.1 et suivants
done
-----
Je me suis servie de basename pour récupérer le nom du fichier.
Je n'avais pas pensé aux sous-répertoires quand j'ai pondu mon script.
avec '/home/anne/toto/rep1/fich4' Comment faire pour récupérer
'rep1/fich4'
avec '/home/anne/toto/rep1/rep11/fich41' Comment faire pour récupérer
'rep1/rep11/fich41'
avec basename je me retrouve avec fich4 sans son répertoire
répertoire de base /home/anne/toto/
il faut que je récupère tout ce qui est après le nom du répertoire de base.
merci pour vos lumières
Anne