Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 fichiersad

As-tu résolu ton problème... même si 'RESOLU' n'est pas inscrit dans le titre hmm

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