Merci. OK, le rename évite d'avoir à passer le nom du fichier en double.
Mais si tu veux faire autre chose qu'un simple rename (un convert par exemple, bref ce que tu veux qui a besoin de deux noms de fichier), comment faire sans passer par un script intermédiaire et un pipe sh ?
EDIT: avec awk '{ print "ma command qui va bien \"" $1 "\" \"" $1 "\""}' ?
NB: Ca marcherait aussi avec un find --exec si du moins on pouvait faire du pattern-replacement dans la commande passée à --exec.
Mais pas réussi pour le moment.
glacote
Ca j'ai bien compris merci. Ma question est toujours: "que mets-tu dans les ... ?"
Dans ta ligne de commande qui commencera par "mv", tu auras besoin deux fois du fichier en question.
Moi jusqu'à présent je faisais un petit fichier auxiliaire débile
Code :
#!/bin/sh
echo mv "$1" "${1/ogg/mp3}"
appelé "rn" et ensuite
Code :
find . -name "*.ogg" -fprint0| xargs --null rn | sh
Ma question est donc: comment fait-on pour éviter cette usine à gaz de fichier "rn" et de " | sh" ?
[/code]
Taz
et bien la commande !
man find
man xargs
-fprint0 fait que chaque chemin de fichier est une chaine terminée par un 0 terminal
--null dit à xargs de considérer qu'une chaine setermine par un 0, donc il ne s'arrete plus à un caracètre d'espacement
ah oui c'est vrai j'ai oublié ce détail. pour régler ça avec find, il faut lui passer -fprint0 et récupérer avec xargs --null et là le problème est réglé
Tu pourrais l'écrire complètement SVP ? Jamais réussi à le faire correctement sans échapper à la main tous les \,"()[] et consorts
Code :
find . -name "*.ogg" -fprint0 | xargs --null ...
je mets quoi dans les "..." ?
Taz
ah oui c'est vrai j'ai oublié ce détail. pour régler ça avec find, il faut lui passer -fprint0 et récupérer avec xargs --null et là le problème est réglé
Pas d'avantage, il manque toujours les guillemets. Si un nom de fichier contient des espaces ça bug.
Taz
cool. mais ma solution avec find fonctionne
je connaissais pas mmv, j'ai essayé avec mv et formant des groupes mais ça ne marche pas. mmv fonctionne bien
arsunik
Je te conseille d'installer mmv.
C'est un petit utilitaire très pratique qui fait ça.
Pour la solution de Taz, rajoutes qq guillemets, tu pourrais avoir des surprises sans cela.
En bash pur, tu as aussi :
Code :
for i in *.ogg; do mv "$i" "${i%.*}.mp3"; done
Avec mmv :
Code :
mmv '*.ogg' '#1.mp3'
Taz
voire même
for f in $(find -name "*.ogg" ); do mv -v $f ${f/ogg/mp3/}; done
puisque que ${} fait la substituion
ou presque
en tout cas la première fonctionne
bobuse
man rename
EDIT : la sol de taz est plus complète :D
Taz
teubé !!!!
for f in $(find -name "*.ogg" ); do
mv $f $(echo $f | sed s/ogg$/mp3/g)
done;
cyplp
j ai un prob tres con j ai installé grip et lame j ai voulu encodé mes cd en ogg, j ai regardé ce que proposé grip par default l'extention est .ogg dc je me dis pas de prob ca va encodé en ogg
j écoute mes .ogg ac rhutmbox mise a jours de ma debian et il les lis plus il affige not a vorbis file !
je verifie ac file et c'est des mp3 :( et non du ogg
j ai quelque Go ed ogg a renomé en .mp3
dc si qq un avais une solution simple ca m'interesserai
merci
note à taz non rm -rf /* ne va pas pas arranger le prob ;)