incrémenter le nom d'un fichier

incrémenter le nom d'un fichier - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 20-07-2005 à 10:07:38    

Hello!
 
sur une debian je souhaite faire un script dont voici l'algorithme :  
 
Pour tout I allant de 1 à 100, I = I + 1
fichierXX.txt = fichierXX+1.txt
 
En soit ça me semble bidon, mais je ne sais pas incrémenter le nom d'un fichier par une valeur :o
 
Merci pour votre aide :jap:


Message édité par Krapaud le 20-07-2005 à 10:08:13
Reply

Marsh Posté le 20-07-2005 à 10:07:38   

Reply

Marsh Posté le 20-07-2005 à 10:15:29    

en script sh ?

Code :
  1. fini=0;
  2. while [ "$fini" = 0 ]; do
  3. compteur=`expr "$compteur" + 1`;
  4. if [ "$compteur" = 100 ]; then
  5. fini=1;
  6. fi
  7. done;


par contre la suite j'ai pas compris ce que tu cherches à faire :

Citation :

fichierXX.txt = fichierXX+1.txt


copier le contenu fichierXX.txt dans fichierXX+l ?
 
Edit : correction bug


Message édité par jlighty le 20-07-2005 à 10:21:03
Reply

Marsh Posté le 20-07-2005 à 10:20:05    

oui en script SH.
 
ok je vais essayer :o

Reply

Marsh Posté le 20-07-2005 à 10:20:20    

zut j'ai raté l'edit :o
:jap:
 
je test!

Reply

Marsh Posté le 20-07-2005 à 10:22:13    

Code :
  1. fini=0;
  2.      while [ "$fini" = 0 ]; do
  3.      compteur=`expr "$compteur" + 1`;
  4.      if [ "$compteur" = 100 ]; then
  5.      fini=1;
  6.      fi
  7.      done;


Reply

Marsh Posté le 20-07-2005 à 10:26:51    

jlighty a écrit :

en script sh ?

Code :
  1. fini=0;
  2. while [ "$fini" = 0 ]; do
  3. compteur=`expr "$compteur" + 1`;
  4. if [ "$compteur" = 100 ]; then
  5. fini=1;
  6. fi
  7. done;


par contre la suite j'ai pas compris ce que tu cherches à faire :

Citation :

fichierXX.txt = fichierXX+1.txt


copier le contenu fichierXX.txt dans fichierXX+l ?
 
Edit : correction bug


 
 
en fait pour être très exact voici exactement ce que j'ai :  
 
fichier1.txt
fichier2.txt
fichier3.txt
(...)
fichier100.txt
 
Le but est que
1/ je supprime le 100ième fichier
2/ je renomme chaque fichier successivement en partant du 99ième (ça va de soi) en incrémentant son nom de 1
donc je dois partir de la fin, c'est pourquoi j'avais espérer une boucle FOR avec un I-- comme en C :o
 
Par contre je ne saisie pas bien le concept de "expr" : il faut bien que je définisses au préalable la "structure" du nom de mon fichier, non?

Reply

Marsh Posté le 20-07-2005 à 10:28:25    

On peut aussi faire avec un for : (quand même plus court au niveau du code)

Code :
  1. for i in `seq 1 100`; do
  2. echo $i;
  3. done;

Reply

Marsh Posté le 20-07-2005 à 10:29:48    

justement, ce qui me chiffonne c'est : est-il possible de compte à l'envers dans une boucle for en SH?

Reply

Marsh Posté le 20-07-2005 à 10:29:52    

d'accord donc tu veux décaler le nom de chaque fichier de 1 !

Reply

Marsh Posté le 20-07-2005 à 10:30:49    

en faisant :

Code :
  1. compteur=`expr "$compteur" - 1`;


tu décrémentes $compteur

Reply

Marsh Posté le 20-07-2005 à 10:30:49   

Reply

Marsh Posté le 20-07-2005 à 10:33:22    

ou :

Code :
  1. for i in `seq 99 -1 1`; do
  2. j=`expr $i + 1`;
  3.      mv "fichier$i.txt" "fichier$j.txt";
  4.     done;


voilà ça devrait marcher

Reply

Marsh Posté le 20-07-2005 à 10:35:34    

jlighty a écrit :

ou :

Code :
  1. for i in `seq 99 -1 1`; do
  2. j=`expr $i + 1`;
  3.      mv "fichier$i.txt" "fichier$j.txt";
  4.     done;


voilà ça devrait marcher


 
 
 [:plat00n] ça à l'air d'être ça :o :jap:

Reply

Marsh Posté le 20-07-2005 à 10:35:35    

je viens de tester le script, il est fonctionnel.

Reply

Marsh Posté le 20-07-2005 à 10:52:43    

c'est parfait, merci beaucoup :jap: :jap: :jap: :jap:

Reply

Marsh Posté le 24-08-2007 à 13:20:42    

Salut !
 
Merci beaucoup pour ce bout de code... et désolé pour la réponse un peu tardive :)
 
J'ai refais une version, et je pense que ça vaut le détour. J'ai fait la version makefile...
 

NAME = wazzaaaaa
 
default:
 @echo "Actions:\n\tclean : supprime tous les fichiers temporaires générés par kate (peut-être préfixé par . et postfixé par ~)\n\tsave  : fait une sauvegarde du projet dans le dossier parent"
 
clean:
 @rm -vf `find ./ -regex "^\.?.*~$""`
 
save: clean
 @nameSize=`echo "../$(NAME)_" | wc -c`; \
 lastNum=`find ../ -regex "^\.\./$(NAME)_[0-9]+.tgz$"" | cut -c $$nameSize- | cut -f 1 -d "." | head -n 1`; \
 lastNum=`expr $$lastNum + 1`;\
 name="../$(NAME)_$$lastNum.tgz"; \
 echo "Nom de la backup : $$name"; \
 tar czf $$name ./


 
Au lieux de tester tous les nombres de 100 à 1 pour trouver le dernier nombre prit, ça cherche tous les fichiers de la form ../[NOM]_[NOMBRE].tgz et ça prend le plus grand... comme ça pas de limite !
 
Voilà, vous pouvez bien sur le modifier pour changer la forme du nom de fichier...
 
J'espère que ça vous sera utile, et que ça marchera chez vous... (ça marche bien chez moi !) :)

Reply

Marsh Posté le 24-08-2007 à 13:29:06    

sinon y a krename

Reply

Marsh Posté le 24-08-2007 à 13:33:02    

c'te bash ... [:cerveau star]


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
Reply

Sujets relatifs:

Leave a Replay

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