|
|
|
|
Bonjour,
Tout d'abord, sachez que je suis novice en matière de script unix.
Voici mon problème:
J’ai 3 repertoires.
REP01 (repertoire de 1 er niveau)
REP02 (repertoire de 2 ème niveau)
REP03 (repertoire de 3 ème niveau)
Dans chaques repertoire, il y a des fichiers texte.
Les fichiers suivent le parcours suivant:
-On crée un fichier dans REP03
-On le déplace dans REP02
-On le déplace pour le stocker dans REP01
Si on veut modifié un fichier, on le copie dans REP03 et on refait le parcours. Dans cas, on se trouve avec le même fichier dans 2 repertoires.
---------------------------------------------------------------------------------
Exemple:
Liste des noms de fichier:
Titi
Toto
Tutu
Tata
Position des fichiers.
Fichier dans REP03
Titi
tutu
Fichier dans REP02
toto
Fichier dans REP01
Tutu
tata
En fait les fichiers sont, positionnés soit dans REP01 ou REP02 ou REP03 tout en sachant qu’ils peuvent se trouver dans REP01 qui est le repertoire final.
Je voudrais sortir une liste des fichier en fonction de leur position mais en gardant toujours le plus grand niveau.
Pour cet exemple:
/REP03/titi
/REP03/tutu
/REP02/toto
/REP01/tata
ici, on ne prend pas tutu dans REP01 car il se trouve dans REP3 (REP03 qui est d’un niveau superieur).
Ensuite, pour chaque fichier, il faudrait récupérer la première ligne.
Et mettre le tout dans un fichier nommé “extract”.
Configuration: Windows XP Internet Explorer 6.0
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]$;-)) Z'@+...che. JP : Zen, my Nuggets ! ;-) Le savoir n'est bon que s'il est partagé.
|
Bonjour,
|
Salut,
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 lami20j |
Ben tu exécutes le script sans te soucier des noms de répertoires.
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;-) Z'@+...che. JP : Zen, my Nuggets ! ;-) Le savoir n'est bon que s'il est partagé. |