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 20/12/2009, à 01:56

al_boon

remplacement de text dans un nfo suivant le résultat de find

bonsoir (oui il est tard wink)

j'essaie en vain de modifier un fichier .nfo avec sed

avec find je recherche les fichiers .nfo et j aimerai modifier la deusieme ligne de chaque nfo en y incorporant le nom du nfo entre deux balise, un petit exemple :

essai.nfo qui contient :

<movie>
    <title></title>                    // Titre du film
</movie>

j aimerai avoir au final :

<movie>
    <title>essai</title>                    // Titre du film
</movie>

j essaie sans résultat avec :

#!/bin/bash

printf %s "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" |
while read -r arg
do
	find "$arg" -depth -iname "*.nfo" -exec perl -i -p -e 's|<title></title> |<title>{}</title> |' "{}.nfo" \;
done

je sais que mon problème viens de find (enfin c est moi qui ne sais pas assez m en servir;)) puisque la commande perl fonctionne seul directement avec le nom de fichier a la place des {}
quelqu'un pourrait il m' aider ?


viva ubuntu ^^ et deux personnes converties !!

ps: il est pas beau mon fils ? (cf mon avatar)

Hors ligne

#2 Le 20/12/2009, à 03:35

frafa

Re : remplacement de text dans un nfo suivant le résultat de find

Bonjour,
ouf, apres pas mal d'essaissss, 'j'ai trouvé une solution qui marche!
pas en perl car moi nullos en perl...

find "$arg" -depth -iname "*.nfo" -exec bash -c "sed -i \"s|<title>.*</title>|<title>\`basename {} .nfo\`</title>|g\" {} " \;

Hors ligne

#3 Le 20/12/2009, à 09:04

al_boon

Re : remplacement de text dans un nfo suivant le résultat de find

merci effectivement cela fonctionne mais seulement si le nom ne contient pas d espace, tu as changé l IFS ? moi j ai :

#!/bin/bash

IFS='
'

printf %s "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" |
while read -r arg
do
	find "$arg" -depth -iname "*.nfo" -exec bash -c "sed -i \"s|<title>.*</title>|<title>\`basename {} .nfo\`</title>|g\" {} " \;
done

Dernière modification par al_boon (Le 20/12/2009, à 09:04)


viva ubuntu ^^ et deux personnes converties !!

ps: il est pas beau mon fils ? (cf mon avatar)

Hors ligne

#4 Le 20/12/2009, à 09:30

al_boon

Re : remplacement de text dans un nfo suivant le résultat de find

meme en commande direct ca ne fonctionne pas avec les espaces :

find -iname "*.nfo" -exec bash -c "sed -i \"s|<title></title>|<title>\`basename {} .nfo\`</title>|g\" {} " \;

viva ubuntu ^^ et deux personnes converties !!

ps: il est pas beau mon fils ? (cf mon avatar)

Hors ligne

#5 Le 20/12/2009, à 13:26

frafa

Re : remplacement de text dans un nfo suivant le résultat de find

Bonjour,
non pas changé $IFS, j'ai juste testé dans terminal sur 1 ligne
comme ca devrait le faire...

find "$arg" -depth -iname "*.nfo" -exec bash -c "sed -i \"s|<title>.*</title>|<title>\$(basename \"{}\" .nfo)</title>|g\" \"{}\"" \;

Hors ligne

#6 Le 20/12/2009, à 16:08

al_boon

Re : remplacement de text dans un nfo suivant le résultat de find

merci je test en rentrant ce soir


viva ubuntu ^^ et deux personnes converties !!

ps: il est pas beau mon fils ? (cf mon avatar)

Hors ligne

#7 Le 20/12/2009, à 17:26

Totor

Re : remplacement de text dans un nfo suivant le résultat de find

voilà qui évitera de lancer autant de bash qu'il y a de fichiers.

find "$arg" -depth -iname "*.nfo" > >(
while read fichier
do
  name="${fichier%.*}"
  name="${name##*/}"
  sed -i "s#\(<title>\).*\(</title>\)#\1${name}\2#" "${fichier}"
done
)

Dernière modification par Totor (Le 20/12/2009, à 22:11)


-- Lucid Lynx --

Hors ligne

#8 Le 20/12/2009, à 19:32

al_boon

Re : remplacement de text dans un nfo suivant le résultat de find

merci Frafa cela fonctionne parfaitement,
merci aussi a toi Totor, les deux fonctionnent wink


viva ubuntu ^^ et deux personnes converties !!

ps: il est pas beau mon fils ? (cf mon avatar)

Hors ligne