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 27/09/2015, à 13: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, à 14: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, à 14:17

nany

Re : Renommer fichier: remplacer un ou plusieurs caractères

Re bonjour wink,


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, à 14:17)

Hors ligne

#4 Le 27/09/2015, à 16: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, à 16:58

nany

Re : Renommer fichier: remplacer un ou plusieurs caractères

bobilesinge a écrit :

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, à 18:39

pingouinux

Re : Renommer fichier: remplacer un ou plusieurs caractères

bobilesinge #4 a écrit :

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, à 20: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, à 21: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, à 21:03)

Hors ligne

#9 Le 28/09/2015, à 21:30

bobilesinge

Re : Renommer fichier: remplacer un ou plusieurs caractères

Top, merci beaucoup smile

Je te souhaite une très bonne soirée,

Thomas

Hors ligne