[Shell]Tester un chemin grace a 1 contenu
Résolu/Fermé
Trezeg
Messages postés
73
Date d'inscription
mercredi 20 décembre 2006
Statut
Membre
Dernière intervention
24 novembre 2010
-
17 janv. 2007 à 11:44
Trezeg Messages postés 73 Date d'inscription mercredi 20 décembre 2006 Statut Membre Dernière intervention 24 novembre 2010 - 18 janv. 2007 à 14:47
Trezeg Messages postés 73 Date d'inscription mercredi 20 décembre 2006 Statut Membre Dernière intervention 24 novembre 2010 - 18 janv. 2007 à 14:47
A voir également:
- [Shell]Tester un chemin grace a 1 contenu
- Flash drive tester - Télécharger - Divers Utilitaires
- Tester son pc - Guide
- Le fichier à télécharger correspond au contenu brut d’un courrier électronique. de quel pays a été envoyé ce message ? - Guide
- Word a trouvé du contenu illisible - Guide
- Classic shell windows 11 - Télécharger - Personnalisation
7 réponses
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
17 janv. 2007 à 16:56
17 janv. 2007 à 16:56
Salut,
Ce n'est pas -x qu'il faut utiliser pour tester l'existence d'un rep mais -d
Ce n'est pas -x qu'il faut utiliser pour tester l'existence d'un rep mais -d
Trezeg
Messages postés
73
Date d'inscription
mercredi 20 décembre 2006
Statut
Membre
Dernière intervention
24 novembre 2010
2
17 janv. 2007 à 17:13
17 janv. 2007 à 17:13
Hello Kilian,
Je m'étais rendu compte de ma betise mais je ne pouvais plus éditer le post... Cela dit, meme avec le -d le probleme demeure le meme...
Trez
Je m'étais rendu compte de ma betise mais je ne pouvais plus éditer le post... Cela dit, meme avec le -d le probleme demeure le meme...
Trez
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
17 janv. 2007 à 18:35
17 janv. 2007 à 18:35
Salut,
Essaie plutôt :
Essaie plutôt :
while read line do set ${line} if [ ! -d "/data/$1/$3/$4" ] then echo -e "Création du répertoire $4" mkdir -p /data/$1/$3/$4 fi done < $(eval echo $param);-))
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
17 janv. 2007 à 19:07
17 janv. 2007 à 19:07
Pour accompagner jipicy, voici un autre exemple ou l'on prend les paramètres depuis un fichier.
Imagine, tu as un fichier dans le rep courant appelé CFI qui contient:
Tu veux tester si data/colonne 1/colonne 3/colonne 4 existe.
Par exemple data/CFI/999923/Relances pour la première occurence.
S'ils n'existe pas, on les crée.
On pars du principe que data/CFI/999923/ existe déjà.
Ca nous donne
Note que pour créer un repertoire comme
a/b/c/d/e
Il faut déjà avoir créé a/b/c/d
Imagine, tu as un fichier dans le rep courant appelé CFI qui contient:
CFI xml 999923 Relances CFI xml 999923 Relances2 CFI xml 999923 Relances3
Tu veux tester si data/colonne 1/colonne 3/colonne 4 existe.
Par exemple data/CFI/999923/Relances pour la première occurence.
S'ils n'existe pas, on les crée.
On pars du principe que data/CFI/999923/ existe déjà.
Ca nous donne
param=CFI #le fichier #le sed permet de remplacer les espaces par des points-virgule #sinon, les espaces sont pris comme séparateur comme les lignes #dans une boucle for for i in `cat $param | sed "s/ /;/g"` do #On cherche le nom du rep (avec colonne 1, colonne 3 etc....) #le point virgule est pris comme délimiteur de champs pour cut rep=data/$(echo $i | cut -d\; -f 1)/$(echo $i | cut -d\; -f 3)/$(echo $i | cut -d\; -f 4) #S'il n'existe pas: création du repertoire if [ ! -d $rep ] then mkdir $rep fi done
Note que pour créer un repertoire comme
a/b/c/d/e
Il faut déjà avoir créé a/b/c/d
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
17 janv. 2007 à 19:14
17 janv. 2007 à 19:14
Salut kilian,
Joli exposé ;-))
Note que pour créer un repertoire comme
a/b/c/d/e
Il faut déjà avoir créé a/b/c/d
Ou utiliser le paramètre "-p" de la commande "mkdir" :
Joli exposé ;-))
Note que pour créer un repertoire comme
a/b/c/d/e
Il faut déjà avoir créé a/b/c/d
Ou utiliser le paramètre "-p" de la commande "mkdir" :
[jp@MDK tmpfs]$ ls fich.txt [jp@MDK tmpfs]$ mkdir -p a/b/c/d/e [jp@MDK tmpfs]$ ls a/ fich.txt [jp@MDK tmpfs]$ ls -R .: a/ fich.txt ./a: b/ ./a/b: c/ ./a/b/c: d/ ./a/b/c/d: e/ ./a/b/c/d/e: [jp@MDK tmpfs]$;-))
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
>
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
17 janv. 2007 à 21:21
17 janv. 2007 à 21:21
Aaah, sympa l'astuce :-)
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
>
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
17 janv. 2007 à 21:38
17 janv. 2007 à 21:38
Note aussi qu'on peut "cumuler"...
mkdir -p data/rep3/{repA/{rep1,rep2,rep3},repB/{mon_rep1,mon_rep2},repC,repD};-))Ce qui donne :;-))
Trezeg
Messages postés
73
Date d'inscription
mercredi 20 décembre 2006
Statut
Membre
Dernière intervention
24 novembre 2010
2
18 janv. 2007 à 10:50
18 janv. 2007 à 10:50
Hello,
J'ai testé la soluce de Kilian mais j'obtiens un message d'erreur.
Je récapitule mon cheminement:
Je n'arrive pas à débugger le truc malgré quelques modifs :((
Trez
J'ai testé la soluce de Kilian mais j'obtiens un message d'erreur.
Je récapitule mon cheminement:
$ pwd /opt/app/progres/interfaces/bin/sql4out $ $ ls -l total 12 drwxr-xr-x 3 oper oper 512 Jan 18 09:57 CFI -rw-r--r-- 1 oper oper 29 Jan 18 10:04 par4out.par -rwxr-xr-x 1 oper oper 752 Jan 18 10:26 test1 $ cat par4out.par OCPA-CFI xml 999923 Relances $ more test1 WRK_DIR=PourTransmettre SQL4OUT_DIR=/opt/app/progres/interfaces/bin/sql4out DATA_DIR=/opt/app/progres/interfaces/bin/sql4out cd $DATA_DIR #le sed permet de remplacer les espaces par des points-virgule #sinon, les espaces sont pris comme séparateur comme les lignes #dans une boucle for for i in `cat ${SQL4OUT_DIR}/par4out.par | sed "s/ /;/g"` do #On cherche le nom du rep (avec colonne 1, colonne 3 etc....) #le point virgule est pris comme delimiteur de champs pour cut rep=$(echo $i | cut -d\; -f 1)/$(echo $i | cut -d\; -f 3)/$(echo $i | cut -d\; -f 4) #S'il n'existe pas: creation du repertoire if [ ! -d $rep/$WRK_DIR ] then mkdir -p $rep/$WRK_DIR fi done $ sh test1 test1: syntax error at line 13: `rep=$' unexpected
Je n'arrive pas à débugger le truc malgré quelques modifs :((
Trez
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
18 janv. 2007 à 14:30
18 janv. 2007 à 14:30
Teste plutôt
bash test1
au lieu de
sh test1
bash test1
au lieu de
sh test1
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
17 janv. 2007 à 21:55
17 janv. 2007 à 21:55
Salut,
et de ça, qu'en pensez-vous?
J'ai utilisé l'exemple de kilian, comme d'hab, je suis paresseux :-)
Au début /home/lami20j/CFI n'existe pas
j'affiche le résultat
je crée le fichier a dans /home/lami20j/CFI/xml/999923/Relances
et le ficher bb dans /home/lami20j/CFI/xml/999923/Relances2
je supprime le répertoire /home/lami20j/CFI/xml/999923/Relances3
j'affiche
et de ça, qu'en pensez-vous?
J'ai utilisé l'exemple de kilian, comme d'hab, je suis paresseux :-)
CFI xml 999923 Relances CFI xml 999923 Relances2 CFI xml 999923 Relances3
Au début /home/lami20j/CFI n'existe pas
lami20j@debian:~$ ls -R CFI/ ls: CFI/: No such file or directoryje crée les répertoires en utilisant les données du fichier
$ for i in $(sed 's/ /\//g' param);do if [ ! -d $(dirname $HOME/$i)/$(basename $HOME/$i) ];then mkdir -p $HOME/$i;fi;done
j'affiche le résultat
$ ls -R CFI/ CFI/: xml CFI/xml: 999923 CFI/xml/999923: Relances Relances2 Relances3 CFI/xml/999923/Relances: CFI/xml/999923/Relances2: CFI/xml/999923/Relances3:
je crée le fichier a dans /home/lami20j/CFI/xml/999923/Relances
et le ficher bb dans /home/lami20j/CFI/xml/999923/Relances2
je supprime le répertoire /home/lami20j/CFI/xml/999923/Relances3
$ touch CFI/xml/999923/Relances/a $ touch CFI/xml/999923/Relances2/bb $ rmdir CFI/xml/999923/Relances3j'affiche
$ ls -R CFI/ CFI/: xml CFI/xml: 999923 CFI/xml/999923: Relances Relances2 CFI/xml/999923/Relances: a CFI/xml/999923/Relances2: bbje relance la commande qui lit le fichier paramètre
$ for i in $(sed 's/ /\//g' param);do if [ ! -d $(dirname $HOME/$i)/$(basename $HOME/$i) ];then mkdir -p $HOME/$i;fi;done
j'affiche
$ ls -R CFI/ CFI/: xml CFI/xml: 999923 CFI/xml/999923: Relances Relances2 Relances3 CFI/xml/999923/Relances: a CFI/xml/999923/Relances2: bb CFI/xml/999923/Relances3:
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
17 janv. 2007 à 22:05
17 janv. 2007 à 22:05
Salut,
et de ça, qu'en pensez-vous ?
Que tu devrais laisser tomber "PERL" ;-DDDDD
Sinon, c'est nickel (mais je préfère quand même mon mien de moi ;-)) )
et de ça, qu'en pensez-vous ?
Que tu devrais laisser tomber "PERL" ;-DDDDD
Sinon, c'est nickel (mais je préfère quand même mon mien de moi ;-)) )
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
>
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
17 janv. 2007 à 22:16
17 janv. 2007 à 22:16
Re,
mais je préfère quand même mon mien de moi
c'est normal :-)
toutefois j'ai pensé à
En ce qui concerne Perl, je ne laisse pas tomber(c'est mon préféré :-)) mais sache que j'ai commencé aussi le C, très sérieusement, et je me suis penché un peu sur sed et bash :-) (ici c'est ta fote :-))
Pour le C je ne te dit pas :-))
mais je préfère quand même mon mien de moi
c'est normal :-)
toutefois j'ai pensé à
Le savoir n'est bon que s'il est partagé.;-)
En ce qui concerne Perl, je ne laisse pas tomber(c'est mon préféré :-)) mais sache que j'ai commencé aussi le C, très sérieusement, et je me suis penché un peu sur sed et bash :-) (ici c'est ta fote :-))
Pour le C je ne te dit pas :-))
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
>
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
17 janv. 2007 à 22:26
17 janv. 2007 à 22:26
Pour le C je ne te dit pas :-))
Demande à "mamiemando" ;-))
Demande à "mamiemando" ;-))
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
17 janv. 2007 à 23:47
17 janv. 2007 à 23:47
Merci pour vos astuces à tous les deux (mkdir cumulatifs et astuce de lami20j).
Très instructif!! ;-)
Très instructif!! ;-)
Trezeg
Messages postés
73
Date d'inscription
mercredi 20 décembre 2006
Statut
Membre
Dernière intervention
24 novembre 2010
2
18 janv. 2007 à 14:47
18 janv. 2007 à 14:47
Ca marche nikel aussi bien avec le bash qu'en tapant ./test1 !
Merci Kilian ;-)
Trez
Merci Kilian ;-)
Trez