Commande Rename.... - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 16-09-2004 à 10:34:15
rename utilise des expressions régulières.
rename 's/\.mpc\.wav$/.wav/' *.wav
Marsh Posté le 16-09-2004 à 10:35:11
mv ancien_nom nouveau_nom
ou sinon si tu veux faire renommer tout les fichiers qui sont dans un rep :
for i in `ls | grep mpc.wav`; do mv $i $i.wav done
je pense que ca doit marcher, sinon tu peux utiliser find avec exec
Marsh Posté le 16-09-2004 à 10:43:42
weed a écrit : |
Il est preferable de remplacer le "ls | grep mpc.wav", qui d'ailleurs ne fonctionnera pas sitot qu'un nom de fichier contiendra un espace par un "*.mpc.wav".
Ensuite, le "mv $i $i.wav" doit être écrit :
mv "$i" "${i%.mpc.wav}".wav
Ensuite effectivement, la boucle for est correcte
Une autre solution est l'utilisation de mmv, petit utilitaire parfois bien pratique.
Marsh Posté le 16-09-2004 à 10:53:48
ArSuniK a écrit : |
Je moinssoie
Il manque un ";" avant "done"
Marsh Posté le 16-09-2004 à 10:54:26
ArSuniK a écrit : |
oki lol
sinon qu'est ce que veut dire tes acolades. Je ne les ai jms utilisé. Juste en 2-3 mots.
Marsh Posté le 16-09-2004 à 11:14:54
c'est pas trop les accolades qui sont bien patriques d'ailleurs mais l'expansion des pararametes du style ${...}
Entre les accolades tu peux faire différents trucs dont un remplacement.
${i} est pareil que $i
${i/toto/tata} correspond à $i avec toto remplacé par tata. Exemple: si $i='toto es beau' ${i/toto/tata} renvoie tata est beau.
{i%toto} permet en général de supprimer la fin de $i
Le top c'est qu'on peut utiliser un pattern
${f%.*} supprime l'extension (basename le fait aussi mais ne fait que ça)
Au fait c'est surtout du bash....
Marsh Posté le 16-09-2004 à 13:22:46
Pour ce qui est de la liste des fichiers, c'est deja ok, mais un mv *.mpc.wav *.wav ne fonctionne pas
Je vais essayer avec rename
Marsh Posté le 16-09-2004 à 13:29:25
il peut pas c'est pas comme dos. tu dois utiliser des scripts pour ça. Le problèmest que c'est le shell qui comprend les wildcards pas mv. mv prend deux noms de fichier basta!
Marsh Posté le 16-09-2004 à 13:39:52
mmv ne semble pas etre une commande de base
Je vais rester sur rename, j'éspère que ca va le faire
Marsh Posté le 17-09-2004 à 10:55:22
J'ai avancé un peu, la commande rename fonctionne bien, mais le problème c'est que dans mon script, la commande n'est pas éxécuter dans le rep donc ca ne fonctionne pas
J'utilise une variable qui contient le nom du fichier a renommer, quelqu'un peut m'adapter rename 's/\.mpc\.wav$/.wav/' *.wav en utilisant le nom complet du fichier ?
Sinon j'ai un petit probleme, pour définir ma boucle je récupère le nombre de fichier par un ls wc -l l'ennuie c'est que le wc -l renvoie le nombre de ligne suivi du nom du fichier sur lequel la commande est lancée. Je récupère ensuite les 2 premiers octets via head. Du coup si il y'a plus de 99 fichiers, ca ne va pas fonctionner car il y'a 3 octets à récupéré Comment faire ?
Merci
Marsh Posté le 17-09-2004 à 12:06:10
Je ne n'y suis toujours pas arrivé (je test avec mv depuis 2H )
Marsh Posté le 22-09-2004 à 00:03:03
fguilleme a écrit : c'est pas trop les accolades qui sont bien patriques d'ailleurs mais l'expansion des pararametes du style ${...} |
i='toto es beau'
echo {i%toto} renvoie : toto est beau
i='.toto es beau'
echo ${i%.*} renvoie .toto est beau
je pense que tu t'es trompé dans tes commandes.
sinon un grand merci pour ces info.
Sinon à titre d'info,
i="/home/weed"
peut tu rajouter un / à la fin de la chaine s'il n'est pas présent avec ton astuce ?
Marsh Posté le 22-09-2004 à 09:44:14
le % est pour la fin
i='toto est beau'
${i%toto} renvoie toto es
$(i/beau/moche} renvoie toto est moche
for f in * do; echo ${f%.*}; done
pour rajouter un / à la fin d'une chaine je pense pas que ça marche et le plus simple est de passer par sed
echo toto | sed '/[^/]$/s#$#/#' renvoie toto/
echo toto | sed '/[^/]$/s#$#/#' renvoie toto/
Marsh Posté le 22-09-2004 à 09:45:04
le dernier était
echo toto/ | sed '/[^/]$/s#$#/#' renvoie toto/
Marsh Posté le 16-09-2004 à 10:16:38
J'ai besoin de renommer une series de fichiers *.mpc.wav en *.wav. Je n'arrive pas à comprendre le fonctionnement de la commande Rename.
Pouvez vous m'aider