Pages : 1
#1 Le 15/02/2008, à 11:46
- teke
bash, find sed et mv
Bonjour, j'ai un soucis avec une ligne de commande, et je ne comprend vraiment pas pourquoi :
Si je fais :
$ echo "Tous_en_orbite-001-C008.ogm" | sed -e 's/Tous_en_orbite-001-C0\([0-9]*\).ogm/TousEnOrbite_H_\1.ogm/'
TousEnOrbite_H_08.ogm
Autrement dit tout va bien !
mais si je fais :
$ find . -type f -exec mv {} `echo "{}" | sed -e 's/Tous_en_orbite-001-C0\([0-9]*\).ogm/TousEnOrbite_H_\1.ogm/'` \;
mv: `./Tous_en_orbite-001-C007.ogm' et `./Tous_en_orbite-001-C007.ogm' identifient le même fichier.
mv: `./Tous_en_orbite-001-C010.ogm' et `./Tous_en_orbite-001-C010.ogm' identifient le même fichier.
je ne comprend vraiment pas... Merci vraiment pour toute aide !
#2 Le 15/02/2008, à 11:55
- Hoper
Re : bash, find sed et mv
la comme ca tout de suite, je dirai qu'il y a un probleme de syntaxe sur le find... un --exec doit se finir par un \; ou un truc dans le genre (me souviens plus bien, cf le man).
Mes tutos et coups de gueule :
http://hoper.dnsalias.net/atdc/
Mastodon: @hoper@framapiaf.org
Hors ligne
#3 Le 15/02/2008, à 20:51
- teke
Re : bash, find sed et mv
Merci beaucoup pour ta réponse Hoper.
Ben justement, le "\;" y est... j'ai relu en entier et plusieurs fois les man de find, mv et sed... sans comprendre...
J'ai eu un petit espoir en voyant ton "--exec" ! mais les deux tirets renvoient bien une erreur, il n'en faut qu'un...
Vraiment je ne comprend pas o๠est le problème...
#4 Le 15/05/2008, à 22:56
- okonkole
Re : bash, find sed et mv
Salut Teke et bonsoir à tous...
J'ai exactement le même problème que toi
la commande avec le echo fonctionne bien..., mais dès que je fais
find /STOCKAGE/Images/ -name "*.jpg" -exec mv {} `echo {} | sed "s/thumb/tb/"` \;
ou pour les espaces dans les répertoires, j'ai un echo "{}"... j'ai essayé les cotes simples etc...
find /STOCKAGE/Images/ -name "*.jpg" -exec mv {} `echo "{}" | sed "s/thumb/tb/"` \;
j'ai comme résultat identifient le même fichier.
As-tu résolu ton problème... même si 'RESOLU' n'est pas inscrit dans le titre
3 mois après, quelqu'un a peut-être une idée !!!!!
Merci à tous !
Ubuntu 10.04 sur Phenom II x3
http://www.exposition-photos.net
Découverte Musique Libre : Albums du groupe SMILEY sur http://www.jamendo.com/fr/artist/smiley
Hors ligne
#5 Le 16/11/2008, à 00:59
- LampeRouge
Re : bash, find sed et mv
De mois en mois les nouveaux arrivent. J'ai aussi un souci avec find dans un script bash. Je ne m'en sort pas. J'ai bien la sortie correcte dans la console mais plus dans mon script.
Comment récupérer la sortie ?
La Champagne: Un peu avant la banquise...
Hors ligne
#6 Le 16/11/2008, à 01:06
- ®om
Re : bash, find sed et mv
C'est normal :
find . -type f -exec mv {} `echo "{}" | sed -e 's/Tous_en_orbite-001-C0\([0-9]*\).ogm/TousEnOrbite_H_\1.ogm/'` \;
Ce qui est entre `` est d'abord exécuté, et le résultat est {}
ce qui revient, pour la commande principale, à faire :
find . -type f -exec mv {} {} \;
d'où ton erreur...
Hors ligne
#7 Le 16/11/2008, à 01:09
- ®om
Re : bash, find sed et mv
my_rename_function() { mv "$1" $(echo "$1" | sed -e 's/Tous_en_orbite-001-C0\([0-9]*\).ogm/TousEnOrbite_H_\1.ogm/'); }
find . -type f -exec my_rename_function {} \;
devrait être un peu mieux (pas testé)
Hors ligne
#8 Le 16/11/2008, à 20:59
- teke
Re : bash, find sed et mv
Merci beaucoup pour la réponse !!!
je n'avais toujours pas trouvé de solution simple... par un script oui... mais pas en ligne de commande...
mais bon... cela me renvoie :
find: my_rename_function: Aucun fichier ou dossier de ce type
que ce soit dans un terminal ou dans un script...
j'ai pourtant pioché dans plusieurs bouquin sur le shell ... mais je ne comprend vraiment pas comment faire...
Pages : 1