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

 


Dernière réponse
Sujet : [bash] prob a la con
SomeBugsInMe

ArSuniK a écrit :

deux minutes de man plus tard :
 
find . -iname '*.ogg' -print0 | xargs -0 rename 's/.ogg$/.mp3/'
 


Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
SomeBugsInMe

ArSuniK a écrit :

deux minutes de man plus tard :
 
find . -iname '*.ogg' -print0 | xargs -0 rename 's/.ogg$/.mp3/'
 

glacote 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 "\""}'  ?
arsunik deux minutes de man plus tard :
 

Code :
  1. find . -iname '*.ogg' -print0 | args -0 rename 's/.ogg$/.mp3/'


glacote 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 :
  1. #!/bin/sh
  2. echo mv "$1" "${1/ogg/mp3}"


appelé "rn" et ensuite

Code :
  1. 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
glacote

Taz a écrit :

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 :
  1. 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é
arsunik

Taz a écrit :

cool. mais ma solution avec find fonctionne


 
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 :
  1. for i in *.ogg; do mv "$i" "${i%.*}.mp3"; done


Avec mmv :

Code :
  1. 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 ;)

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)