#1 Le 27/09/2015, à 12:41
- bobilesinge
Renommer fichier: remplacer un ou plusieurs caractères
Bonjour,
Une question un peu limite, car déjà traitée à coup sûr, mais je n'ai pas trouvé de solution me satisfaisant.
J'aimerai renommer des noms de fichiers pour enlever des caractères qui ne passent pas sur ma synchronisation cloud (accents, ? ! etc) et les remplacer par d'autres.
J'ai trouvé detox qui a l'air sympa, mais je n'arrive pas à l'installer (changement de pc et maj linux au programme, mais pas tout de suite tout de suite; j'ai pour l'instant un vieux debian de 2012 je crois...).
Sinon, j'ai trouvé la ligne de commande:
for f in *.pdf; do mv "$f" "$(echo $f | tr 'A' 'B')"; done
Mais cela ne marche que pour des caractères uniques
Si j'ai fichier : PATATE.pdf, il deviendra PBTBTE.pdf
(Si j'essaie avec plusieurs caractères:
for f in *.pdf; do mv "$f" "$(echo $f | tr 'A' 'BCBCB')"; done
J'aurais le même résultat, seule la première lettre est prise en compte)
Quelqu'un aurait une idée, que ce soit avec une ligne de commande semblable ou une alternative quelconque pour que je puisse remplacer assez simplement une suite de caractères par une autre ?
Merci beaucoup,
Thomas
Hors ligne
#2 Le 27/09/2015, à 13:17
- pingouinux
Re : Renommer fichier: remplacer un ou plusieurs caractères
Bonjour,
rename -n 's/A/BCBCB/g' *.pdf
et enlever -n si c'est correct.
Hors ligne
#3 Le 27/09/2015, à 13:17
- nany
Re : Renommer fichier: remplacer un ou plusieurs caractères
Re bonjour ,
pour les accents (et d’autres caractères tels que les ligatures, par exemple), tu peux utiliser iconv :
for f in *.pdf; do mv "$f" "$(echo $f | iconv -f utf8 -t ascii//TRANSLIT)"; done
Pour les caractères de ponctuation, sed pourrait convenir. Ce qui donnerait au final (en remplaçant, par exemple, ? par - et ! par _) :
for f in *.pdf; do mv "$f" "$(echo $f | iconv -f utf8 -t ascii//TRANSLIT | sed 'y/?!/-_')"; done
Il te restes donc à déterminer quels caractères tu dois mettre dans la commande sed.
Dernière modification par nany (Le 27/09/2015, à 13:17)
Hors ligne
#4 Le 27/09/2015, à 15:53
- bobilesinge
Re : Renommer fichier: remplacer un ou plusieurs caractères
Bonjour Pingouinux et rebonjour Nany,
Merci à tous les deux pour vos réponses complémentaires, j'avance plutôt bien.
J'ai encore deux soucis:
Nany, ta deuxième commande ne fonctionne pas chez moi, j'ai comme message d'erreur:
sed: -e expression n°1, caractère 7: commande `y' inachevée
mv: impossible de déplacer « A.pdf » vers « »: Aucun fichier ou dossier de ce type
Pingouinux, saurais-tu comment utiliser des caractères tels que ( ) ' avec ta commande, si c'est possible ?
(message d'erreur: Unmatched ( in regex; marked by <-- HERE in m/( <-- HERE / at (eval 1) line 1.)
Merci encore,
Thomas
Hors ligne
#5 Le 27/09/2015, à 15:58
- nany
Re : Renommer fichier: remplacer un ou plusieurs caractères
Nany, ta deuxième commande ne fonctionne pas chez moi, j'ai comme message d'erreur:
sed: -e expression n°1, caractère 7: commande `y' inachevée
mv: impossible de déplacer « A.pdf » vers « »: Aucun fichier ou dossier de ce type
Oups ! J’ai oublié de fermer la commande sed avec un slash !
for f in *.pdf; do mv "$f" "$(echo $f | iconv -f utf8 -t ascii//TRANSLIT | sed 'y/?!/-_/')"; done
Hors ligne
#6 Le 27/09/2015, à 17:39
- pingouinux
Re : Renommer fichier: remplacer un ou plusieurs caractères
Pingouinux, saurais-tu comment utiliser des caractères tels que ( ) ' avec ta commande, si c'est possible ?
Peux-tu montrer la liste des remplacements que tu veux faire ? Cela me permettrait de tester la commande avant de te la transmettre.
Hors ligne
#7 Le 28/09/2015, à 19:34
- bobilesinge
Re : Renommer fichier: remplacer un ou plusieurs caractères
Bonsoir,
Merci à nouveau à tous les deux,
Nany, ta solution fonctionne bien pour les caractères classiques, merci beaucoup.
Pingouinux, par exemple, j'aimerai remplacer les ' par -
Aurais-tu une idée ?
Merci beaucoup,
Thomas
Hors ligne
#8 Le 28/09/2015, à 20:01
- pingouinux
Re : Renommer fichier: remplacer un ou plusieurs caractères
Pingouinux, par exemple, j'aimerai remplacer les ' par -
rename -n "s/'/-/g" *.pdf
Édité : Simplification
Dernière modification par pingouinux (Le 28/09/2015, à 20:03)
Hors ligne
#9 Le 28/09/2015, à 20:30
- bobilesinge
Re : Renommer fichier: remplacer un ou plusieurs caractères
Top, merci beaucoup
Je te souhaite une très bonne soirée,
Thomas
Hors ligne