#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
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
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
Mais vous êtes fort sympathique watael dis donc....
Salut,
T'es modeste
Hors ligne