Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2578 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Commande Rename....

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Commande Rename....

n°557597
M300A
Sehr hopfen, vielen IBU, wow!
Posté le 16-09-2004 à 10:16:38  profilanswer
 

:hello:
 
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 :??:

mood
Publicité
Posté le 16-09-2004 à 10:16:38  profilanswer
 

n°557604
arsunik
ma tuxitude me beastifie
Posté le 16-09-2004 à 10:34:15  profilanswer
 

rename utilise des expressions régulières.
 
rename 's/\.mpc\.wav$/.wav/' *.wav

n°557608
weed
Posté le 16-09-2004 à 10:35:11  profilanswer
 

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

n°557618
arsunik
ma tuxitude me beastifie
Posté le 16-09-2004 à 10:43:42  profilanswer
 

weed a écrit :


for i in `ls | grep mpc.wav`; do mv $i $i.wav done


 
:ouch:
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.

n°557624
bobuse
Posté le 16-09-2004 à 10:53:48  profilanswer
 

ArSuniK a écrit :


 
Ensuite effectivement, la boucle for est correcte :)
 


 
Je moinssoie :o
 
Il manque un ";" avant "done" [:ooooo]


Message édité par bobuse le 16-09-2004 à 11:49:40

---------------
get amaroK plugin
n°557626
weed
Posté le 16-09-2004 à 10:54:26  profilanswer
 

ArSuniK a écrit :

:ouch:
mv "$i" "${i%.mpc.wav}".wav


oki lol  
sinon qu'est ce que veut dire tes acolades. Je ne les ai jms utilisé. Juste en 2-3 mots.

n°557643
fguilleme
Posté le 16-09-2004 à 11:14:54  profilanswer
 

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....

n°557703
M300A
Sehr hopfen, vielen IBU, wow!
Posté le 16-09-2004 à 13:22:46  profilanswer
 

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 :)

n°557705
fguilleme
Posté le 16-09-2004 à 13:29:25  profilanswer
 

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!

n°557706
arsunik
ma tuxitude me beastifie
Posté le 16-09-2004 à 13:35:14  profilanswer
 

Avec mmv, tu peux :
mmv '*.mpc.wav' '#1.wav'

mood
Publicité
Posté le 16-09-2004 à 13:35:14  profilanswer
 

n°557707
M300A
Sehr hopfen, vielen IBU, wow!
Posté le 16-09-2004 à 13:39:52  profilanswer
 

mmv ne semble pas etre une commande de base :)
 
Je vais rester sur rename, j'éspère que ca va le faire ;)

n°558050
M300A
Sehr hopfen, vielen IBU, wow!
Posté le 17-09-2004 à 10:55:22  profilanswer
 

:hello:
 
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 :D
 
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 :jap:

n°558082
M300A
Sehr hopfen, vielen IBU, wow!
Posté le 17-09-2004 à 12:06:10  profilanswer
 

:hot:
 
Je ne n'y suis toujours pas arrivé (je test avec mv depuis 2H :fou:)

n°558085
M300A
Sehr hopfen, vielen IBU, wow!
Posté le 17-09-2004 à 12:16:55  profilanswer
 

C'est bon je viens de réussir :hot:

n°560288
weed
Posté le 22-09-2004 à 00:03:03  profilanswer
 

fguilleme a écrit :

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....


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 ?

n°560334
fguilleme
Posté le 22-09-2004 à 09:44:14  profilanswer
 

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/

n°560335
fguilleme
Posté le 22-09-2004 à 09:45:04  profilanswer
 

le dernier était
echo toto/ | sed '/[^/]$/s#$#/#' renvoie toto/


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Commande Rename....

 

Sujets relatifs
Ecrire un mail en html avec la commande 'mail'[URGENT] commande pour désarchiver simplement .tar sans .gz
commande liste des montagesCompilation commande ls sous debian
Lancer une commande au demarrage ?Debian - comment demarrer en ligne de commande
commande linux [Résolu]Voir le débit réseau en ligne de commande
La commande "du"Commande "top"
Plus de sujets relatifs à : Commande Rename....


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR