Renommer plusieurs fichiers à la volée

Renommer plusieurs fichiers à la volée - Shell/Batch - Programmation

Marsh Posté le 02-08-2005 à 13:47:42    

salut,
 
J'ai pleins de fichiers xxx.txt.moved ex :
ra001.txt.moved
s002.txt.moved
pos003.txt.moved
 
j'ai besoin d'enlever le ".moved" à ces fichiers afin de trouver :
ra001.txt
s002.txt
pos003.txt
 
J'ai tenté un "mv *.moved *" mais cela ne fonctionne pas.
 
Avez-vous une idée ?

Reply

Marsh Posté le 02-08-2005 à 13:47:42   

Reply

Marsh Posté le 02-08-2005 à 14:06:57    

tu peux essayer de faire une boucle 'for' et enlever le .moved dans la syntaxe avec un sed

Reply

Marsh Posté le 02-08-2005 à 14:40:55    

Ou encore, en BASH, toujour à l'aide d'une boucle for, utiliser les opérations de manip de chaînes.
 
Quel est ton niveau, tu sais faire une boucle ?
 
[:pingouino]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 02-08-2005 à 21:54:14    

Ou basename et ça devrait aller.

Reply

Marsh Posté le 02-08-2005 à 22:11:38    

wackevat a écrit :

Ou basename et ça devrait aller.


 
Non, car basename se contente d'oter le chemin pour ne conserver que le nom du fichier.
 
En ksh, il suffit de faire un truc du genre :
 

for nom_fichier in `\ls -1 *moved`
do
    radix=`echo ${nom_fichier} | cut -d'.' -f1`
    mv ${nom_fichier} ${radix}.txt
done


 
 
Sinon en non-standard, il me semble (pas sûr) que sur certains unixoïdes, il y a une commande "rename" assez évoluée. A confirmer.


Message édité par Elmoricq le 02-08-2005 à 22:12:31
Reply

Marsh Posté le 02-08-2005 à 23:03:00    

Elmoricq a écrit :

Non, car basename se contente d'oter le chemin pour ne conserver que le nom du fichier.


http://unixhelp.ed.ac.uk/CGI/man-cgi?basename
--> tu peux définir suffix comme tu veux.

Reply

Marsh Posté le 03-08-2005 à 09:24:23    

wackevat a écrit :

http://unixhelp.ed.ac.uk/CGI/man-cgi?basename
--> tu peux définir suffix comme tu veux.


 
Je n'avais jamais remarqué cette option dans basename. Plutôt sympa.
 
Je reprends donc mon exemple pour utiliser basename :
 

for nom_fichier in `\ls -1 *moved`
do
    mv ${nom_fichier} `basename ${nom_fichier} .moved`
done

Reply

Sujets relatifs:

Leave a Replay

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