Script unix - comparer plusieurs repertoires
Fermé
pio_killer
Messages postés
61
Date d'inscription
mardi 18 juillet 2006
Statut
Membre
Dernière intervention
15 avril 2016
-
19 janv. 2007 à 06:14
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 28 janv. 2007 à 11:33
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 28 janv. 2007 à 11:33
A voir également:
- Script unix - comparer plusieurs repertoires
- Script vidéo youtube - Guide
- Ghost script - Télécharger - Polices de caractères
- Script bat - Guide
- Microsoft activation script - Accueil - Windows
- Comparer prix amazon - Accueil - Commerce
4 réponses
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
20 janv. 2007 à 13:48
20 janv. 2007 à 13:48
Salut,
[jp@MDK tmpfs]$ ls -R .: REP01/ REP02/ REP03/ ./REP01: Tata Tutu ./REP02: Toto ./REP03: Titi Tutu [jp@MDK tmpfs]$ for fich in $(find . -type f); do (echo -e "$fich : \c") >> fich.txt && sed -n '1p' $fich >> fich.txt; done [jp@MDK tmpfs]$ cat fich.txt | sed 's%/% %2' | sort -r +2 | uniq -f 2 | sort -r | sed 's% %/%1;s%\.%%' > extract.txt [jp@MDK tmpfs]$ cat extract.txt /REP03/Tutu : Ceci est la 1ère ligne de Tutu /REP03/Titi : Ceci est la 1ère ligne de Titi /REP02/Toto : Ceci est la 1ère ligne de Toto /REP01/Tata : Ceci est la 1ère ligne de Tata [jp@MDK tmpfs]$;-))
pio_killer
Messages postés
61
Date d'inscription
mardi 18 juillet 2006
Statut
Membre
Dernière intervention
15 avril 2016
22 janv. 2007 à 19:49
22 janv. 2007 à 19:49
Bonjour,
tes commandes marchent bien mais seulement pour des repertoires nommés comme dans cet exemple.
Je voudrais en fait pouvoir, pour autant de repertoire nécessaire, donner un ordre.
Par exemple (toujours avec le système de niveau):
répertoire "travail" => niveau3
répertoire "fini" => niveau 2
répertoire "stockage"=> niveau 1
Il faut tjrs le niveau le plus haut.
tes commandes marchent bien mais seulement pour des repertoires nommés comme dans cet exemple.
Je voudrais en fait pouvoir, pour autant de repertoire nécessaire, donner un ordre.
Par exemple (toujours avec le système de niveau):
répertoire "travail" => niveau3
répertoire "fini" => niveau 2
répertoire "stockage"=> niveau 1
Il faut tjrs le niveau le plus haut.
pio_killer
Messages postés
61
Date d'inscription
mardi 18 juillet 2006
Statut
Membre
Dernière intervention
15 avril 2016
28 janv. 2007 à 10:26
28 janv. 2007 à 10:26
Y'a personne qui peut m'aider ?
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
28 janv. 2007 à 11:29
28 janv. 2007 à 11:29
Salut,
tes commandes marchent bien mais seulement pour des repertoires nommés comme dans cet exemple.
Ton affirmation est fausse.
Dans son exemple jipicy n'utilise pas des répertoires nommés (enfin un répertoire doit avoir un nom), il cherche dans l'arborescence de répertoire courant qui dans son cas est tmpfs.
Il s'en fiche completement de ce qu'il y a dédans
Cette commande cherche toutes le fichier de type regulier dans le répertoire courn et ensuite par rapport à leur appartenance il fait le traitement
D'ailleurs il a fait ce que tu as demandé
J’ai 3 repertoires.
REP01 (repertoire de 1 er niveau)
REP02 (repertoire de 2 ème niveau)
REP03 (repertoire de 3 ème niveau)
Si je ne me trompe pas maintenant tu veux autre chose
supposons que la racine de ton arborescence s'appelle sauvegarde
donc /home/user/sauvegarde
tu veux dire que
répertoire "travail" => niveau3
répertoire "fini" => niveau 2
répertoire "stockage"=> niveau 1
travail, fini, stockage se trouve dans sauvegarde mais qu'ils ont un certains niveau?!
en ce cas il faut etablir manuellement le niveau avec un couple de genre
nom=>niveau
perso je ne comprends pas exactement ce que tu veux.
tu peux détailler avec un exemple de ce que tu veux obtenir
1. la diversité de l'arborescence de départ
2. ce que tu veux obtenir
tes commandes marchent bien mais seulement pour des repertoires nommés comme dans cet exemple.
Ton affirmation est fausse.
Dans son exemple jipicy n'utilise pas des répertoires nommés (enfin un répertoire doit avoir un nom), il cherche dans l'arborescence de répertoire courant qui dans son cas est tmpfs.
Il s'en fiche completement de ce qu'il y a dédans
Cette commande cherche toutes le fichier de type regulier dans le répertoire courn et ensuite par rapport à leur appartenance il fait le traitement
for fich in $(find . -type f)Donc peut être tu dois être un peu plus clair.
D'ailleurs il a fait ce que tu as demandé
J’ai 3 repertoires.
REP01 (repertoire de 1 er niveau)
REP02 (repertoire de 2 ème niveau)
REP03 (repertoire de 3 ème niveau)
Si je ne me trompe pas maintenant tu veux autre chose
supposons que la racine de ton arborescence s'appelle sauvegarde
donc /home/user/sauvegarde
tu veux dire que
répertoire "travail" => niveau3
répertoire "fini" => niveau 2
répertoire "stockage"=> niveau 1
travail, fini, stockage se trouve dans sauvegarde mais qu'ils ont un certains niveau?!
en ce cas il faut etablir manuellement le niveau avec un couple de genre
nom=>niveau
perso je ne comprends pas exactement ce que tu veux.
tu peux détailler avec un exemple de ce que tu veux obtenir
1. la diversité de l'arborescence de départ
2. ce que tu veux obtenir
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
28 janv. 2007 à 11:33
28 janv. 2007 à 11:33
Ben tu exécutes le script sans te soucier des noms de répertoires.
Puis une fois que tu as ton fichier "extract", tu affectes les répertoires qui t'intéressent à des variables :
Puis une fois que tu as ton fichier "extract", tu affectes les répertoires qui t'intéressent à des variables :
niv1="stockage" niv2="fini" niv3="travail"puis tu à l'aide de "grep" tu filtres le tout :
grep $niv3 extract.txt | sort >> final.txt grep $niv2 extract.txt | sort >> final.txt grep $niv1 extract.txt | sort >> final.txt;-)
20 janv. 2007 à 14:32
[jp@MDK tmpfs]$ cat fich.txt | sed 's%/% %2' | sort -r +2 | uniq -f 2 | sort -r | sed 's% %/%1;s%\.%%' > extract.txt
Quelle barbarie!! :-))
20 janv. 2007 à 14:39
... suer ;-)
JP. Hannibal Lecter de service ;-))