Boucle dans un shell pour creation de fichiers

Boucle dans un shell pour creation de fichiers - Linux et OS Alternatifs

Marsh Posté le 18-03-2002 à 22:40:59    

J'ai vu un jour un de mes prof qui a fait une boucle dans un shell sous Linux.... pour créer plusieurs fichiers en même temps...
Quelque chose du style :
for(i=0, i<=10, i++){touch fichier.i}
Quelqu'un pourrait me donner la syntaxe exacte svp ?

Reply

Marsh Posté le 18-03-2002 à 22:40:59   

Reply

Marsh Posté le 18-03-2002 à 22:43:25    

jultey a écrit a écrit :

J'ai vu un jour un de mes prof qui a fait une boucle dans un shell sous Linux.... pour créer plusieurs fichiers en même temps...
Quelque chose du style :
for(i=0, i<=10, i++){touch fichier.i}
Quelqu'un pourrait me donner la syntaxe exacte svp ?  




 
for i in 0..10
do
touch fichier.i
done
 
ou un truc dans le style

Reply

Marsh Posté le 18-03-2002 à 23:01:59    

Ca a l'air d'etre pas loin  de la bonne solution.... En tout cas, j'ai plus le message d'erreur de tout a l'heure et ca créer un fichier nommé fichier.i  
Je tatonne pour trouver la syntaxe... j'en suis pas loin, je le sens !!! :sarcastic:

Reply

Marsh Posté le 18-03-2002 à 23:03:07    

Ca a l'air d'etre pas loin  de la bonne solution.... En tout cas, j'ai plus le message d'erreur de tout a l'heure et ca créer un fichier nommé fichier.i  
Je tatonne pour trouver la syntaxe... j'en suis pas loin, je le sens !!! :sarcastic:

Reply

Marsh Posté le 18-03-2002 à 23:04:20    

petite correction mais c'est pas encore ça quand même :
 
 
for i in 0..10
do
touch fichier.$i
done

 

[jfdsdjhfuetppo]--Message édité par tatanka--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 18-03-2002 à 23:07:01    

sinon, tu peux faire ça, mais c'est chiant , et y-a surement un autre moyen :
 
for i in 0 1 2 3 4 5 6 7 8 9 10
do
touch fichier.$i
done

 

[jfdsdjhfuetppo]--Message édité par tatanka--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 19-03-2002 à 11:36:24    

je confim il faut mettre $i


---------------
This message is provided AS IS, and comes with ABSOLUTELY NO WARRANTY,  
Reply

Marsh Posté le 19-03-2002 à 11:44:19    

ya pas vraiment plus simple
 
Il faudrait utiliser expr mais on aurait plus de caractères :)
ou $(()) et (()) avec le bash ou zsh.
 
ça serait plus joli en perl.

Reply

Marsh Posté le 19-03-2002 à 12:56:32    

ArSuniK a écrit a écrit :

ya pas vraiment plus simple
 
Il faudrait utiliser expr mais on aurait plus de caractères :)
ou $(()) et (()) avec le bash ou zsh.
 
ça serait plus joli en perl.  




 
et en awk, y-a moyen de faire un rtuc plus simple aussi, non ?

Reply

Marsh Posté le 19-03-2002 à 13:44:11    

hmmm je sais pas kel est la solution avec le moins de cara :)
 
awk 'BEGIN{for(i=0;i<10;i++)printf"">i}'
 
c ptet en awk oui :mdr:

Reply

Marsh Posté le 19-03-2002 à 13:44:11   

Reply

Marsh Posté le 19-03-2002 à 14:01:36    

for i in `seq 1 10`; do touch $i;done
 
seq est sympa pour ça


---------------
Two thousand years of misery, of torture in my name, hypocrisy made paramount, paranoia the law, my name is called religion, sadistic, sacred whore.
Reply

Marsh Posté le 19-03-2002 à 14:18:25    

the_fireball a écrit a écrit :

for i in `seq 1 10`; do touch $i;done
 
seq est sympa pour ça  




 
Arf, j'avais complément oublié seq :p
on peut encore améliorer :
for i in `seq 1 10`;do :>$i;done
seq 1 10|awk '{printf "">$1}'

Reply

Marsh Posté le 19-03-2002 à 14:41:24    

"seq", c'est quoi ? ça sert juste à aller d'un nombre à un autre?
Pareil pour "awk", je connais pas...
Je crois que les solutions que vous proposez deviennent trop complexes pour moi !!!

Reply

Marsh Posté le 19-03-2002 à 14:46:37    

jultey a écrit a écrit :

"seq", c'est quoi ? ça sert juste à aller d'un nombre à un autre?
Pareil pour "awk", je connais pas...
Je crois que les solutions que vous proposez deviennent trop complexes pour moi !!!  




 
seq a priori, c'est pour faire une sequance de nombre compris entre les deux borne que tu spécifie apres (t'as "man seq" qui devrait pouvoir t'expliquer ça)
 
sinon, les ` permettent d'obtenir le resultat de "seq 1 10", si tu les avait pas mis, il t'aurait sortie un tru du style :
fichier.seq fichier.1 et fichier.10
 
 
retiens la soluce de the_firewall, elle est simple et elle marche tres bien

 

[jfdsdjhfuetppo]--Message édité par tatanka--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 19-03-2002 à 14:52:13    

tatanka a écrit a écrit :

 
 
seq a priori, c'est pour faire une sequance de nombre compris entre les deux borne que tu spécifie apres (t'as "man seq" qui devrait pouvoir t'expliquer ça)
 
sinon, les ` permettent d'obtenir le resultat de "seq 1 10", si tu les avait pas mis, il t'aurait sortie un tru du style :
fichier.seq fichier.1 et fichier.10
 
 
retiens la soluce de the_firewall, elle est simple et elle marche tres bien  
 
 




 
Merci pour les explications car j'avais pas trop le temps de les faire :jap: et merci pour le nouveau surnom :D  :p


---------------
Two thousand years of misery, of torture in my name, hypocrisy made paramount, paranoia the law, my name is called religion, sadistic, sacred whore.
Reply

Marsh Posté le 19-03-2002 à 14:53:42    

the_fireball a écrit a écrit :

 
 
Merci pour les explications car j'avais pas trop le temps de les faire :jap: et merci pour le nouveau surnom :D  :p  




 
the_netfiler ?
 
 
 
:D

Reply

Marsh Posté le 19-03-2002 à 14:54:53    

the_fireball a écrit a écrit :

 
 
Merci pour les explications car j'avais pas trop le temps de les faire :jap: et merci pour le nouveau surnom :D  :p  




 
arf !   :D  
sorry  :jap:

Reply

Marsh Posté le 19-03-2002 à 14:57:07    

ya pas de mal, chui pas susceptible :jap:  
 
et miniplus, il peut parler tiens :na:


---------------
Two thousand years of misery, of torture in my name, hypocrisy made paramount, paranoia the law, my name is called religion, sadistic, sacred whore.
Reply

Marsh Posté le 19-03-2002 à 15:00:02    

the_fireball a écrit a écrit :

ya pas de mal, chui pas susceptible :jap:  
 
et miniplus, il peut parler tiens :na:  




 
the_iptable ?

Reply

Marsh Posté le 19-03-2002 à 15:01:56    

Mon admin reseau m'a dit qu'on pouvait creer un fichier avec :
 
#!/usr/bin/python
 
for i in range(100):
        print "touch fichier", i
 
Et ensuite appelé le fichier.
 
Merci pour toutes vos réponses je les essayrais ce soir chez moi ...

Reply

Marsh Posté le 19-03-2002 à 15:07:32    

-+ => the_ipchains, ça fait plus style avec le mot chains ;)  
 
Il doit y avoir un tas de possibilité, avec python, perl, C et autre, mais bon, après faut avoir les softs pour. Touch et seq font partie des outils GNU que l'on trouve partout, alors que python ou autre par forcèment...


---------------
Two thousand years of misery, of torture in my name, hypocrisy made paramount, paranoia the law, my name is called religion, sadistic, sacred whore.
Reply

Marsh Posté le 19-03-2002 à 17:05:44    

Huhu marrant ca seq je connaissais pas...  
 
On peut feinter:
 
touch fichier.`seq -s " fichier." 1 10`
 
:D

 

[jfdsdjhfuetppo]--Message édité par pipomolo--[/jfdsdjhfuetppo]


---------------
This message is provided AS IS, and comes with ABSOLUTELY NO WARRANTY,  
Reply

Marsh Posté le 19-03-2002 à 17:15:16    

sous tcsh  
 
 
foreach a ( 1 2 3 )  
echo $a  
end

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed