logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 23-03-2021 15:27:23

otyugh
CA Debian-Facile
Lieu : Quimperlé/Arzano
Distrib. : Debian Stable
Inscription : 20-09-2016
Site Web

[Résolu]Convertir toute son arborescence en "minuscule ascii ?"

Je me demandais, vous connaitreriez un moyen de renommer recursivement tous noms de fichiers/dossier d'un chemin avec des correspondance "char complexes=>ascii", genre  [é|è|ê|É|E] => e mais pour touuut les caracters existants ? Et qui pourrait demander si y a des risque de conflit si deux fichier chopent le même nom. Ça existe ? Parce que de temps en temps je tombe sur ce genre de cas où "j'en ai besoin" (système de fichier moins tolérant, logiciel n'acceptant que certains caractères) et à chaque fois je bricole.

J'imagine que vu la quantité de caractères persos, ça ferait une commande regex de fou un peu.

Dernière modification par otyugh (23-03-2021 16:49:41)


virtue_signaling.pngpalestine.png

Hors ligne

#2 23-03-2021 16:37:47

David5647
Membre
Distrib. : Debian Sid
Noyau : 5.15.0-2-amd64
(G)UI : i3wm + des bouts de kde
Inscription : 27-08-2017

Re : [Résolu]Convertir toute son arborescence en "minuscule ascii ?"

Je connais une commande, fournie par le paquet python3-unidecode

echo "Grand-mère mange des œufs, c'est super ça!" | unidecode


Grand-mere mange des oeufs, c'est super ca!


(C'est tout ce que j'ai pu produire comme exemple, désolé...)

"Transliterate" qu'ils appellent ça!

usage: unidecode [-h] [-e ENCODING] [-c TEXT] [FILE]

Transliterate Unicode text into ASCII. FILE is path to file to transliterate. Standard input is used if FILE is omitted and -c is not specified.

positional arguments:
  FILE

optional arguments:
  -h, --help            show this help message and exit
  -e ENCODING, --encoding ENCODING
                        Specify an encoding (default is UTF-8)
  -c TEXT               Transliterate TEXT instead of FILE
 

Hors ligne

#3 23-03-2021 16:49:27

otyugh
CA Debian-Facile
Lieu : Quimperlé/Arzano
Distrib. : Debian Stable
Inscription : 20-09-2016
Site Web

Re : [Résolu]Convertir toute son arborescence en "minuscule ascii ?"

Ouah. Tu brilles de mille feux, que ton âme soit sanctifié tout ça \o/
...Par contre je trouve pas l'executable qur tu utilises dans le paquet python3-unidecode T_T

Dernière modification par otyugh (23-03-2021 16:55:38)


virtue_signaling.pngpalestine.png

Hors ligne

#4 23-03-2021 17:09:53

David5647
Membre
Distrib. : Debian Sid
Noyau : 5.15.0-2-amd64
(G)UI : i3wm + des bouts de kde
Inscription : 27-08-2017

Re : [Résolu]Convertir toute son arborescence en "minuscule ascii ?"

Ah?! Il installe la commande dans ~/.local/bin

whereis unidecode


unidecode: /home/david/.local/bin/unidecode

Hors ligne

#5 23-03-2021 17:16:21

otyugh
CA Debian-Facile
Lieu : Quimperlé/Arzano
Distrib. : Debian Stable
Inscription : 20-09-2016
Site Web

Re : [Résolu]Convertir toute son arborescence en "minuscule ascii ?"

whereis unidecode
 


unidecode:


virtue_signaling.pngpalestine.png

Hors ligne

#6 23-03-2021 17:44:26

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : [Résolu]Convertir toute son arborescence en "minuscule ascii ?"

Hello,

Je crois bien que c'est un "package" python (ou module).
https://pypi.org/project/Unidecode/

Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#7 23-03-2021 17:51:29

David5647
Membre
Distrib. : Debian Sid
Noyau : 5.15.0-2-amd64
(G)UI : i3wm + des bouts de kde
Inscription : 27-08-2017

Re : [Résolu]Convertir toute son arborescence en "minuscule ascii ?"

Yop! Désolé, j'aurai dû être plus précis
.local/bin n'est pas dans le PATH par défaut
Comme j'installe souvent des trucs python, chez moi c'est fait (je sais pas si c'est recommandé de le faire)


Voir msg #9

Si c'est bien installé, normalement

 ls ~/.local/bin/ | grep unidecode


unidecode




Et pour pouvoir lancer unidecode, soit

~/.local/bin/unidecode


soit:

export PATH="$HOME/.local/bin:$PATH"

unidecode

Dernière modification par David5647 (23-03-2021 18:28:46)

Hors ligne

#8 23-03-2021 18:06:24

otyugh
CA Debian-Facile
Lieu : Quimperlé/Arzano
Distrib. : Debian Stable
Inscription : 20-09-2016
Site Web

Re : [Résolu]Convertir toute son arborescence en "minuscule ascii ?"

Nan mais y a rien à ce chemin. Je sais pas ce que t'as fait pour l'avoir là, ça semble super pas standard. O.o

virtue_signaling.pngpalestine.png

Hors ligne

#9 23-03-2021 18:25:33

David5647
Membre
Distrib. : Debian Sid
Noyau : 5.15.0-2-amd64
(G)UI : i3wm + des bouts de kde
Inscription : 27-08-2017

Re : [Résolu]Convertir toute son arborescence en "minuscule ascii ?"

Bon, le paquet python3-unidecode fourni la lib mais pas la commande...

J'ai pourtant la même version dans sous bullseye

python3 -m pip list | grep [Uu]nidecode


Unidecode                     1.2.0


(Au passage, on appréciera la majuscule dans le nom du paquet... )

Tente l'install via pip

apt install python3-pip


python3 -m pip install unidecode --user



Puis, ajout du path:

export PATH="$HOME/.local/bin:$PATH"

Dernière modification par David5647 (23-03-2021 18:29:07)

Hors ligne

#10 23-03-2021 18:43:03

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : [Résolu]Convertir toute son arborescence en "minuscule ascii ?"

Oui c'est par pip que ça passe.
C'est ce que je tentais d'expliquer au #6, ce n'est pas une commande issue d'un paquet .deb
Mais plutôt un module/package de python.
D'où la présence de l'exécutable dans $HOME/user/.local/bin

Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#11 23-03-2021 18:49:08

David5647
Membre
Distrib. : Debian Sid
Noyau : 5.15.0-2-amd64
(G)UI : i3wm + des bouts de kde
Inscription : 27-08-2017

Re : [Résolu]Convertir toute son arborescence en "minuscule ascii ?"

J'ai toujours pensé, sauf différence de version, que le paquet debian fournissait la même chose que le paquet pypi.
Je suis plutôt étonné que l'un fournisse la commande et pas l'autre.

Là ou j'ai buggé, c'est quand j'ai désinstallé le paquet debian : python3-unidecode,
la commande n'a pas été retirée de .local/bin mais, plantait faute de lib dans /usr/lib

Hors ligne

#12 23-03-2021 20:28:09

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : [Résolu]Convertir toute son arborescence en "minuscule ascii ?"

J'ai trouvé un outil .deb : unaccent

NAME
       unaccent - remove accents from input stream or a string

SYNOPSIS
       unaccent [--debug_low] [--debug_high] [-h] charset [string] [expected]

DESCRIPTION
       With a single argument, unaccent reads data from stdin, replaces accented letters by their unaccented equivalent and writes the result on
       stdout.  If the second argument ('string') is provided unaccent transforms it by replacing accented letters by their  unaccented  equiva‐
       lent.  The  result  is  printed  on the standard output.  The charset of the input string or the data read from stdin is specified by the
       'charset' argument (ISO-8859-15 for instance). The output is printed using the same charset.



Je l'ai installé du coup smile
Merci otyugh de m'avoir fait chercher big_smile

$ var="éèàÉÈÀôöñÑÖ"
$ unaccent UTF-8 $var
eeaEEAoonNO
$

Dernière modification par Tawal (23-03-2021 20:33:07)


Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#13 23-03-2021 22:01:27

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : [Résolu]Convertir toute son arborescence en "minuscule ascii ?"

Donc pour répondre à la question initiale, 2 outils sont proposés pour transformer les caractères accentués en caractères non accentués.
Il ne reste qu'à faire un petit script pour renommer avec récurrence.

Au plaisir smile

Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#14 23-03-2021 22:59:30

otyugh
CA Debian-Facile
Lieu : Quimperlé/Arzano
Distrib. : Debian Stable
Inscription : 20-09-2016
Site Web

Re : [Résolu]Convertir toute son arborescence en "minuscule ascii ?"

Mah, unaccent n'est pas suffisement complet ; dans mon cas il faut aussi retirer tous les "+?!\*[] %()" (entre autres) ; en fait le contenu final idéal pour moi serait [a-z0-9_-.]*
Cela dit, unaccent fait la conversion la plus problématique, je pense qu'avec j'ai qu'à exclure tous les autres caractères, c'est relativement simple à faire (d'où le "résolu" ; je n'ai pas le courage de faire le script maintenant mais y a pas grand chose à faire pour quand j'en aurai besoin ~).

Dernière modification par otyugh (23-03-2021 23:01:36)


virtue_signaling.pngpalestine.png

Hors ligne

#15 23-03-2021 23:08:23

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : [Résolu]Convertir toute son arborescence en "minuscule ascii ?"

Alors avec l'appui de : https://dwheeler.com/encodef/
le man : https://dwheeler.com/encodef/encodef.pdf

David Wheeler est une bonne référence wink

Edit: il restera certainement quelques caractères à traiter, mais le plus gros sera enlevé.
Sinon, une solution avec un sed et tous les caractères en dur dans l'expression (sans oubli ...), car comme tu le dis en #1, une regex serait folle, à mon avis aussi.

Edit2: l'avantage d'encodef est qu'il traite les caractères "très" spéciaux dans les noms de fichiers/dossiers comme les retours à la ligne et autres bizarreries.

Dernière modification par Tawal (23-03-2021 23:19:55)


Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

Pied de page des forums