Incrémenter nombre de variables
Fermé
sym59
Messages postés
40
Date d'inscription
jeudi 10 mai 2012
Statut
Membre
Dernière intervention
11 août 2015
-
9 sept. 2013 à 16:36
sym59 Messages postés 40 Date d'inscription jeudi 10 mai 2012 Statut Membre Dernière intervention 11 août 2015 - 12 sept. 2013 à 14:46
sym59 Messages postés 40 Date d'inscription jeudi 10 mai 2012 Statut Membre Dernière intervention 11 août 2015 - 12 sept. 2013 à 14:46
A voir également:
- Incrémenter nombre de variables
- Nombre de jours entre deux dates excel - Guide
- Nombre facile - Télécharger - Outils professionnels
- Ascii nombre de caractères - Guide
- Nombre de secteurs réalloués - Forum Matériel & Système
- En raison d'un nombre important d'échec de connexion snapchat - Forum Snapchat
3 réponses
sym59
Messages postés
40
Date d'inscription
jeudi 10 mai 2012
Statut
Membre
Dernière intervention
11 août 2015
9 sept. 2013 à 17:59
9 sept. 2013 à 17:59
J'imagine qu'il y a une méthode plus simple mais je ne vois vraiment pas...
Je cherche en faite à comparer deux répertoires. Pour celà, je souhaite naviguer dans chaque dossier et sous-dossier de ces deux répertoires et, dans chacun de ces dossiers, comparer les fichiers...
Pour créer les variables correspondantes aux répertoires, j'ai pensé à une fonction :
Mais elle se limite à 4 niveaux de sous-arborescence dans ce cas précis (9 dans la version longue) ...
Et c'est après que çà se gatte : 9 boucles imbriquées comme des poupées russes et des dizaines de commandes que je répète dans chaque boucle (qui pour moi, pourraient être évitée)
Je cherche en faite à comparer deux répertoires. Pour celà, je souhaite naviguer dans chaque dossier et sous-dossier de ces deux répertoires et, dans chacun de ces dossiers, comparer les fichiers...
Pour créer les variables correspondantes aux répertoires, j'ai pensé à une fonction :
function mon_adresse()
{
if [ -n $dossier1 ]; then
adr_1=$(echo "$adr_racine/$1") #ce sera le 1er dossier à comparer
if [ -n $dossier2 ]; then
#adr_2 = sous-dossier niveau 1
adr_2=$(echo "$adr_1/$dossier2")
if [ -n $dossier3 ]; then
#adr_3 = sous-dossier niveau 2
adr_3=$(echo "$adr_2/$dossier3")
if [ -n $dossier4 ]; then
adr_4=$(echo "$adr_3/$dossier4")
#adr_4 = sous-dossier niveau 3
fi
fi
fi
fi
}
Mais elle se limite à 4 niveaux de sous-arborescence dans ce cas précis (9 dans la version longue) ...
Et c'est après que çà se gatte : 9 boucles imbriquées comme des poupées russes et des dizaines de commandes que je répète dans chaque boucle (qui pour moi, pourraient être évitée)
Utilisateur anonyme
Modifié par qqchquicommenceparQ le 9/09/2013 à 18:08
Modifié par qqchquicommenceparQ le 9/09/2013 à 18:08
salut,
diff peut comparer le contenu de deux répertoires.
mais s'il s'agit de comparer le contenu des fichiers
si la hiérarchie de sous-répertoires est identique (les sous-répertoires portent le même nom) sous les deux répertoires principaux, tu peux faire une boucle for sur l'un d'eux en activant l'option globstar, et en utilisant **, et de comparer les fichiers avec diff (aussi)
diff peut comparer le contenu de deux répertoires.
mais s'il s'agit de comparer le contenu des fichiers
si la hiérarchie de sous-répertoires est identique (les sous-répertoires portent le même nom) sous les deux répertoires principaux, tu peux faire une boucle for sur l'un d'eux en activant l'option globstar, et en utilisant **, et de comparer les fichiers avec diff (aussi)
sym59
Messages postés
40
Date d'inscription
jeudi 10 mai 2012
Statut
Membre
Dernière intervention
11 août 2015
10 sept. 2013 à 10:18
10 sept. 2013 à 10:18
salut Q*,
perso je préfère utiliser comm que diff pour les fichiers ; çà m'évite de devoir enlever les "<" et les ">" quand je veux réutiliser le résultat...
J'ai déjà une première version du fichier mais assez limitée :
elle permet de comparer les fichiers des deux répertoires "parents", les sous-dossiers et leurs fichiers.
Donc, si ces sous dossiers comportent à leur tour des dossiers, leur contenu ne peut pas être comparé... (C'est comme si le film inception était limité au rêve dans la camionnette =p)
Sinon tu peux m'aiguiller un peu plus sur le globstar et ** ? ce sont des options pour for ou pour diff?
Je ne peux pas compter sur man :
je te remercie
perso je préfère utiliser comm que diff pour les fichiers ; çà m'évite de devoir enlever les "<" et les ">" quand je veux réutiliser le résultat...
J'ai déjà une première version du fichier mais assez limitée :
elle permet de comparer les fichiers des deux répertoires "parents", les sous-dossiers et leurs fichiers.
Donc, si ces sous dossiers comportent à leur tour des dossiers, leur contenu ne peut pas être comparé... (C'est comme si le film inception était limité au rêve dans la camionnette =p)
Sinon tu peux m'aiguiller un peu plus sur le globstar et ** ? ce sont des options pour for ou pour diff?
Je ne peux pas compter sur man :
man diff --> No manual entry for "diff"
help diff --> No information on "diff"
je te remercie
globstar est une option de shopt (de bash), qui, si elle est activée, permet de descendre dans tous les sous-répertories.
ceci affichera les fichiers qui sont au même endroit sous les deux répertoires.
ceci affichera les fichiers qui sont au même endroit sous les deux répertoires.
#!/bin/bash
racine=/chemin/vers
dossier1="dossier1"
dossier2="dossier2"
cherche="$racine/$dossier1"
shopt -s nullglob globstar
for f in "$cherche/"**/*
do
test -f "$f" && test -f "${f/"$dossier1"/$dossier2}" && echo "${f#$cherche/*} est dans les deux répertoires"
done
sym59
Messages postés
40
Date d'inscription
jeudi 10 mai 2012
Statut
Membre
Dernière intervention
11 août 2015
12 sept. 2013 à 14:46
12 sept. 2013 à 14:46
Salut Q*,
ta solution semble intéressante !
Je suis parti dans une toute autre direction dans mon petit script (j'essaie de contourner un probleme) et je ne vois pas encore comment je vais l'adapter mais je referais signe dès que ce sera le cas ;-)
merci
ta solution semble intéressante !
Je suis parti dans une toute autre direction dans mon petit script (j'essaie de contourner un probleme) et je ne vois pas encore comment je vais l'adapter mais je referais signe dès que ce sera le cas ;-)
merci