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 13/05/2018, à 18:29

marin50

sed et mot clé dans un fichier

Bonjour tout le monde, je voudrai utiliser sed pour renommer des fichier et enlever des mot clé indésirable dans celui-ci. Pour cela j'aimerai utiliser un fichier texte pour y mettre tout les mots clé indésirable.

je créer donc un fichier texte filter.txt qui se compose des mot clé à enlever
exemple:

x264-FRATERNiTY
Com\[FRENCH\]\[TS\]
x264-AUTHORiTY
\[emule-island
AC3-AUTOPSiE
XviD-ARTEFAC
XviD-AViTECH
XviD-NEWCiNE
XviD-EXTREME
XVid-FUNKKY
XviD-Slay3R
XViD-FUNKKY
XviD-LEGiON
\[ Torrent9
x264-iWire
THEATRiCAL
THEATRICAL
x264-VENUE
AC3-FUNKKY
TRUEFRENCH
XviD-GLUPS
XVid-FUTiL

Ainsi qu'un script ajout.sh
en voici le code :

  for a in /media/U-S-E2/unformat/* ;do
    b=$a
    for filt in $(cat filter.txt) ;do
       b=$(echo $b | sed -e 's/$filt//g');
    done
  if ! [ -e "$b" ]; then
     echo $b
  fi
done

pourtant le nom du nouveau fichier, $b, est exactement le même qu'au départ alors que les mots clé corresponde a des partie du titre...
Si quelqu'un peut m'aider je lui en serai très reconnaissant ^^

Hors ligne

#2 Le 13/05/2018, à 18:49

pingouinux

Re : sed et mot clé dans un fichier

Bonsoir,
Pour être sûr d'avoir bien compris :
Tu veux supprimer, dans les noms des fichiers, la partie correspondant à un de tes mots-clés ?
Veux-tu juste la liste des nouveaux noms, ou renommer réellement les fichiers ?

Hors ligne

#3 Le 13/05/2018, à 18:51

marin50

Re : sed et mot clé dans un fichier

oui c'est cela wink
ici je ne fait qu'un echo pour éviter les erreur embêtante ^^ mais après je ferai a la place de echo $b:

mv $a $b

Hors ligne

#4 Le 13/05/2018, à 19:30

pingouinux

Re : sed et mot clé dans un fichier

Dans filter.txt, doubler le \ devant [, mais inutile de backslasher ].
Exemple :

Com\\[FRENCH]\\[TS]

Essaye ceci :

for a in /media/U-S-E2/unformat/*
do
   b=$a
   while read filt
   do
      b=$(sed "s/$filt//g" <<<"$b")
   done <filter.txt
   [ -e "$b" ] || echo "$b"
done

Ensuite, si c'est bon, ce sera :

mv -i "$a" "$b"

Hors ligne

#5 Le 13/05/2018, à 19:32

Watael

Re : sed et mot clé dans un fichier

salut,

d'abord, on va construire une regex contenant la liste :

while read exp; do test -z "$Exp" && Exp="$exp" || Exp+="\|$exp"; done < tonFichierFiltre

on ne lit pas un fichier avec une boucle for

ensuite, on travaille sur le nom de fichier uniquement :

for f in "$chemin"/*
do
   test -f "$f" || continue
   name=$(sed 's/'"$Exp"'//g' <<<"${f##*/}")
   test -f "$chemin/$name" || mv "$f" "$chemin/$name"
done

pas testé in extenso... /!\

Dernière modification par Watael (Le 13/05/2018, à 19:33)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#6 Le 13/05/2018, à 19:42

marin50

Re : sed et mot clé dans un fichier

merci pingouinux et watael mais j'obtient une erreur au niveau du sed:

 ajout.sh: 10: ajout.sh: Syntax error: redirection unexpected

par contre watael pourquoi ne lit on pas un fichier avec un for ? ^^
et surtout qu'est ce qu'une regex ? '^^

merci en tout cas pour vos réponse smile

Hors ligne

#7 Le 13/05/2018, à 19:48

pingouinux

Re : sed et mot clé dans un fichier

As-tu bien exécuté ton script en bash, et non en sh ?

Hors ligne

#8 Le 13/05/2018, à 19:56

marin50

Re : sed et mot clé dans un fichier

en faisant ./ajout.sh ?
si oui j'obtient alors cette erreur:

sed: -e expression #1, char 8: unknown option to `s'
sed: -e expression #1, char 5: unknown option to `s'
sed: -e expression #1, char 5: unknown option to `s'
sed: -e expression #1, char 7: unknown option to `s'
sed: -e expression #1, char 5: unknown option to `s'
sed: -e expression #1, char 5: unknown option to `s'
sed: -e expression #1, char 8: unknown option to `s'
sed: -e expression #1, char 7: unknown option to `s'
sed: -e expression #1, char 7: unknown option to `s'
sed: -e expression #1, char 5: unknown option to `s'
sed: -e expression #1, char 5: unknown option to `s'

Hors ligne

#9 Le 13/05/2018, à 20:22

Watael

Re : sed et mot clé dans un fichier

parce que for lit des mots, et pas des lignes.
et donc, \[ Torrent9 sera considéré comme deux mots.

tenter d'écrire un programme sed sans savoir ce qu'est une regex, c'est à peine croyable !

man 7 regex

Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#10 Le 13/05/2018, à 21:37

marin50

Re : sed et mot clé dans un fichier

Mais vous êtes fort sympathique watael dis donc....

Hors ligne

#11 Le 14/05/2018, à 07:44

jean-luc5629

Re : sed et mot clé dans un fichier

marin50 a écrit :

Mais vous êtes fort sympathique watael dis donc....

Salut,

T'es  modeste  smile

Hors ligne