Debian Debian-France Debian-Facile Debian-fr.org Debian-fr.xyz Debian ? Communautés

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 16: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 17:49:41)


datalove-datalove-s1-2.png agendadulibre-lagendadulibre.png arzinfo-arzinfo.png

En ligne

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

David5647
Membre
Distrib. : Debian Bullseye/Sid
Noyau : 5.7.0-2-amd64
(G)UI : KDE/i3wm
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 17: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 17:55:38)


datalove-datalove-s1-2.png agendadulibre-lagendadulibre.png arzinfo-arzinfo.png

En ligne

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

David5647
Membre
Distrib. : Debian Bullseye/Sid
Noyau : 5.7.0-2-amd64
(G)UI : KDE/i3wm
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 18: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:


datalove-datalove-s1-2.png agendadulibre-lagendadulibre.png arzinfo-arzinfo.png

En ligne

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

Tawal
Membre
Distrib. : Debian 10 Buster
Noyau : Linux 4.19.0-16-amd64
(G)UI : Xfce4
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.

Hors ligne

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

David5647
Membre
Distrib. : Debian Bullseye/Sid
Noyau : 5.7.0-2-amd64
(G)UI : KDE/i3wm
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 19:28:46)

Hors ligne

#8 23-03-2021 19: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

datalove-datalove-s1-2.png agendadulibre-lagendadulibre.png arzinfo-arzinfo.png

En ligne

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

David5647
Membre
Distrib. : Debian Bullseye/Sid
Noyau : 5.7.0-2-amd64
(G)UI : KDE/i3wm
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 19:29:07)

Hors ligne

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

Tawal
Membre
Distrib. : Debian 10 Buster
Noyau : Linux 4.19.0-16-amd64
(G)UI : Xfce4
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.

Hors ligne

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

David5647
Membre
Distrib. : Debian Bullseye/Sid
Noyau : 5.7.0-2-amd64
(G)UI : KDE/i3wm
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 21:28:09

Tawal
Membre
Distrib. : Debian 10 Buster
Noyau : Linux 4.19.0-16-amd64
(G)UI : Xfce4
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 21:33:07)


Comme la science n'est pas infuse, elle se diffuse.

Hors ligne

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

Tawal
Membre
Distrib. : Debian 10 Buster
Noyau : Linux 4.19.0-16-amd64
(G)UI : Xfce4
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.

Hors ligne

#14 23-03-2021 23: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 (24-03-2021 00:01:36)


datalove-datalove-s1-2.png agendadulibre-lagendadulibre.png arzinfo-arzinfo.png

En ligne

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

Tawal
Membre
Distrib. : Debian 10 Buster
Noyau : Linux 4.19.0-16-amd64
(G)UI : Xfce4
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 (24-03-2021 00:19:55)


Comme la science n'est pas infuse, elle se diffuse.

Hors ligne

Pied de page des forums