Renommer plusieurs fichiers à la volée - Shell/Batch - Programmation
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
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 ?
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` |
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.
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.
Marsh Posté le 03-08-2005 à 09:24:23
wackevat a écrit : http://unixhelp.ed.ac.uk/CGI/man-cgi?basename |
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` |
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 ?