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 18/08/2023, à 18:13

Jarodd

[Résolu] Supprimer les emojis des noms de fichiers

Bonjour,

J'ai des fichiers téléchargés sur Youtube qui ont des emojis dans leurs noms. Exemples :
Ninjago ? Cristalise | Episode 1.mp4
Ninjago | L-amulette de foudre ⚡️Saison 13.webm
Ninjago | Une ombre sinistre ? S014.mp4

J'essaye de faire un script bash qui enlève tous les emojis :

emojis=()
emojis+=("✨")
emojis+=("?")
emojis+=("⛸")
# ... longue liste...

for emoji in "${emojis[@]}"
do
  string_to_clear="Ninjago | Une ombre sinistre ? S014.mp4"
   string_to_clear="$(echo "${string_to_clear}" | sed -r "s/$emoji//g")"
done
echo "$string_to_clear"

Mais la liste des emojis fait plus de 3500 lignes, et je ne les ai pas tous... De plus ceux qui sont encodés sur plusieurs caractères ne sont pas remplacés dans ce script.
Donc c'est lent et pas optimisé.
Quand je fais un ls, parfois je vois l'emoji, parfois je vois les caractères :

'Ninjago '$'\360\237\245\267'' Cristalise | Episode 1.mp4'
'Ninjago | L-amulette de foudre ⚡️Saison 13.webm'
'Ninjago '$'\360\237\245\267'' Le soulevement des dragons | Episode 2.webm'

Je voudrais savoir s'il y a un meilleur moyen de retirer ces emojis, sans devoir les lister tous (il en existe trop pour être exhaustif...) ? Est-ce faisable avec les caractères encodés ?
Peut-être que bash n'est pas la meilleure solution, je suis ouvert à d'autres langages si c'est plus efficace.

Merci pour vos conseils.

Edit : certains émojis sont affichés dans la saisie du message quand on les copie, mais ne sont pas visibles quand le message est posté lol

Edit 20/08 :
plusieurs solutions possibles, j'ai choisi d'utiliser rename (voir message #21 pour le message le plus complet) :

$ rename -n "s/[^[:alnum:] _.'-]//g; s/ /_/g; s/'/-/g; s/__/_/g;" Ninjago\ |\ L\'amulette\ de\ foudre\ ⚡️Saison\ 13.mp4 
rename(Ninjago | L'amulette de foudre ⚡️Saison 13.mp4, Ninjago_L-amulette_de_foudre_Saison_13.mp4)
$

Dernière modification par Jarodd (Le 20/08/2023, à 20:54)


Ubuntu 22.04.3 LTS (64 bits)

Hors ligne

#2 Le 18/08/2023, à 20:12

pingouinux

Re : [Résolu] Supprimer les emojis des noms de fichiers

Bonsoir Jarodd,
Tu pourrais faire l'inverse : faire une liste des caractères autorisés, et supprimer ceux qui n'appartiennent pas à la liste.

Hors ligne

#3 Le 19/08/2023, à 06:20

serged

Re : [Résolu] Supprimer les emojis des noms de fichiers

pingouinux a écrit :

Bonsoir Jarodd,
Tu pourrais faire l'inverse : faire une liste des caractères autorisés, et supprimer ceux qui n'appartiennent pas à la liste.

Certes, mais cette liste peut être longue, avec les langues non latines (russe, arabe, chinois...).


LinuxMint Vera Cinnamon et d'autres machines en MATE, XFCE... 20.x , 21.x ou 19.x
Tour : Asus F2A55 / AMD A8-5600K APU 3,6GHz / RAM 16Go / Nvidia GeForce GT610 / LM21.1 Cinnamon
Portable : LDLC Mercure MH : Celeron N3450 /RAM 4Go / Intel HD graphics 500 i915 / biboot Win 10 (sur SSD) - LM21.1 MATE (sur HDD)

Hors ligne

#4 Le 19/08/2023, à 07:05

bruno

Re : [Résolu] Supprimer les emojis des noms de fichiers

Bonjour,

Je m’étonne de ne pas avoir vu de solution avec sed et rename wink (on renomme en remplaçant tout caractère non alphanumérique par un tiret ou autre)
Le plus simple est certainement d'utiliser detox :

sudo apt install detox

Exemple :

$ detox -v L-amulette\ de\ foudre\ ⚡Saison\ 13.webm 
Scanning: L-amulette de foudre ⚡Saison 13.webm
L-amulette de foudre ⚡Saison 13.webm -> L-amulette_de_foudre_Saison_13.webm

Voir man detox pour les options.

#5 Le 19/08/2023, à 09:59

Hizoka

Re : [Résolu] Supprimer les emojis des noms de fichiers

Salut, pour bruno smile

rename -n "s/[^[:alnum:] _.'-]//g" *
rename(L-amulette de foudre ⚡Saison 13.webm, L-amulette de foudre Saison 13.webm)

Si ça te va, tu enlève le -n.
Si tu veux conserver d'autres caractères, tu les ajoutes dans [^[:alnum:] _.'-]


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#6 Le 19/08/2023, à 13:15

MicP

Re : [Résolu] Supprimer les emojis des noms de fichiers

Bonjour

Quel problème as-tu rencontré qui ferait que tu sois obligé de supprimer les caractères émoji de ces noms de fichiers ?

Peut-être que le problème est tout simplement que l'application avec laquelle tu veux utiliser ces fichiers n'a pas été paramétrée pour utiliser des noms de fichiers au format UTF-8,
ou alors, c'est le système de fichiers sur lequel tu voudrais enregistrer ces fichiers qui n'accepte pas des noms de fichiers au format UTF-8,
ou alors …

wikipedia -> Problème XY

Dernière modification par MicP (Le 19/08/2023, à 13:26)

Hors ligne

#7 Le 19/08/2023, à 13:24

Watael

Re : [Résolu] Supprimer les emojis des noms de fichiers

he! pas facile de trouver ⚡ sur le clavier ! big_smile


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#8 Le 19/08/2023, à 13:32

MicP

Re : [Résolu] Supprimer les emojis des noms de fichiers

U+26A1 -> ⚡

Faire Ctrl+Maj+u (U en minuscule)
un petit u souligné s'affiche pour vous inviter à entrer la valeur du point de code unicode du caractère
=> vous entrez alors 26A1

Dernière modification par MicP (Le 19/08/2023, à 13:44)

Hors ligne

#9 Le 19/08/2023, à 14:26

bruno

Re : [Résolu] Supprimer les emojis des noms de fichiers

MicP a écrit :

U+26A1 -> ⚡

Faire Ctrl+Maj+u (U en minuscule)
un petit u souligné s'affiche pour vous inviter à entrer la valeur du point de code unicode du caractère
=> vous entrez alors 26A1

En dehors du fait que cela ne fonctionne que sous GNOME avec Ibus, est-ce qu'il y a des gens qui font réellement cela ? Et les chiffres il faut les mettre en minuscule aussi ? tongue

#10 Le 19/08/2023, à 14:32

Watael

Re : [Résolu] Supprimer les emojis des noms de fichiers

Ctrl+Maj+u (U en minuscule)

mais comment peux-tu faire Maj+u et obtenir un U minuscule ? lol lol lol


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#11 Le 19/08/2023, à 17:37

Jarodd

Re : [Résolu] Supprimer les emojis des noms de fichiers

Bonjour,
Merci pour vos retours, plein de solutions ! big_smile

pingouinux a écrit :

Bonsoir Jarodd,
Tu pourrais faire l'inverse : faire une liste des caractères autorisés, et supprimer ceux qui n'appartiennent pas à la liste.

Oui ça serait envisageable.

serged a écrit :

Certes, mais cette liste peut être longue, avec les langues non latines (russe, arabe, chinois...).

Ce n'est pas mon cas, mes noms de fichiers sont uniquement avec l'alphabet latin.
Mais plus la solution est générale, mieux c'est, donc on peut prendre en compte les autres alphabets !

bruno a écrit :

Le plus simple est certainement d'utiliser detox

J'installe ça rapidement pour tester !

Edit : j'ai cette erreur :

$ detox -v L-amulette_de_foudre_⚡️Saison_13.mp4 
Scanning: L-amulette_de_foudre_⚡️Saison_13.mp4
L-amulette_de_foudre_⚡️Saison_13.mp4: No such file or directory

(j'ai fait la touche Tabulation pour compléter le nom du fichier, donc il existe bien)

MicP a écrit :

Quel problème as-tu rencontré qui ferait que tu sois obligé de supprimer les caractères émoji de ces noms de fichiers ?

Je ne suis pas "obligé" de supprimer ces caractères. Simplement je préfère ne pas avoir ces dessins en plein milieu du nom du fichier, qui n'apportent rien (à part une difficulté de lecture). Les égouts et les couleuvres...

MicP a écrit :

U+26A1 -> ⚡

Faire Ctrl+Maj+u (U en minuscule)
un petit u souligné s'affiche pour vous inviter à entrer la valeur du point de code unicode du caractère
=> vous entrez alors 26A1

J'ai bien le "u" qui apparaît, mais quand je saisis le "A", cela affiche "ɪ1" et non l'emoji. Je n'ai peut-être pas bien compris la manipulation. Heureusement, je veux enlever ces caratères, et non les ajouter smile

Dernière modification par Jarodd (Le 19/08/2023, à 17:40)


Ubuntu 22.04.3 LTS (64 bits)

Hors ligne

#12 Le 19/08/2023, à 18:01

erresse

Re : [Résolu] Supprimer les emojis des noms de fichiers

Jarodd a écrit :

J'ai bien le "u" qui apparaît, mais quand je saisis le "A", cela affiche "ɪ1" et non l'emoji.

C'est parce-que tu as été trop précis en voulant saisir le A majuscule... Si tu tapes 26a1 après le u souligné, ça donne bien l'éclair, par contre avec 26A1, ça fait ce que tu as montré "ɪ1".


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois le problème solutionné, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#13 Le 19/08/2023, à 18:51

MicP

Re : [Résolu] Supprimer les emojis des noms de fichiers

Pour pouvoir taper la lettre a en majuscule il faut que le clavier soit positionné en majuscules (avec le verrouillage)
sinon, le simple fait de relâcher la touche Maj (shift) provoque le problème.

Mais de toutes façons, ça fonctionne tout aussi bien en entrant les lettres de la valeur hexadécimale en minuscules.

Dans son message #11, Jarodd a écrit :

… je préfère ne pas avoir ces dessins en plein milieu du nom du fichier, qui n'apportent rien (à part une difficulté de lecture).  …

C'est vrai que ça me gêne aussi, mais bon, si on peut s'en passer ce sera pas plus mal.

Dans son message #9, bruno a écrit :

… En dehors du fait que cela ne fonctionne que sous GNOME avec Ibus, …

En fait, j'utilise cette méthode depuis XFCE sur debian 12 (bookworm)
mais c'est vrai qu'avec certaines méthodes d'entrée, ça ne marchera pas.

Dernière modification par MicP (Le 19/08/2023, à 19:01)

Hors ligne

#14 Le 19/08/2023, à 19:48

Watael

Re : [Résolu] Supprimer les emojis des noms de fichiers

$ /usr/bin/printf '\u26a1\n'
⚡
$

Dernière modification par Watael (Le 19/08/2023, à 19:49)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#15 Le 20/08/2023, à 12:29

bruno

Re : [Résolu] Supprimer les emojis des noms de fichiers

Jarodd a écrit :

Edit : j'ai cette erreur :

$ detox -v L-amulette_de_foudre_⚡️Saison_13.mp4 
Scanning: L-amulette_de_foudre_⚡️Saison_13.mp4
L-amulette_de_foudre_⚡️Saison_13.mp4: No such file or directory

(j'ai fait la touche Tabulation pour compléter le nom du fichier, donc il existe bien)

Non, il n'existe pas. C'est bien ce qu'indique cette erreur (le fichier n'a pas ce nom dans ton premier message) ou alors il y a un problème entre le système de fichiers et l'encodage utilisé.

#16 Le 20/08/2023, à 13:16

Hizoka

Re : [Résolu] Supprimer les emojis des noms de fichiers

et ma commande rename ?


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#17 Le 20/08/2023, à 16:01

Jarodd

Re : [Résolu] Supprimer les emojis des noms de fichiers

Bonjour,
Avec rename, les emojis sont bien supprimés :

$ rename -n "s/[^[:alnum:] _.'-]//g" *
rename(L-amulette de foudre ⚡Saison 13.mp4, L-amulette de foudre Saison 13.mp4)

Par contre si j'enlève l'option -n, je n'ai pas de résultat :

$ rename  "s/[^[:alnum:] _.'-]//g" *
$

Et le fichier n'est pas renommé.
J'ai aussi essayé en mettant directement le nom du fichier à la place de l'étoile :

$ rename  "s/[^[:alnum:] _.'-]//g" L-amulette\ de\ foudre\ Saison\ 13.mp4 
$

Ubuntu 22.04.3 LTS (64 bits)

Hors ligne

#18 Le 20/08/2023, à 16:37

geole

Re : [Résolu] Supprimer les emojis des noms de fichiers

Bonjour
C'est surprenant.

rename -n "s/[^[:alnum:] _.'-]//g" *
rename( * § ,    )
rename(a      b   ^   , a      b      )

 ls -ls
total 4
4 -rw-rw-r-- 1 a a 8 août  20 17:32 ' * § '
0 -rw-rw-r-- 1 a a 0 août  20 17:29 'a      b   ^   '
 
rename "s/[^[:alnum:] _.'-]//g" *
ls -ls 
total 4
4 -rw-rw-r-- 1 a a 8 août  20 17:32 '   '
0 -rw-rw-r-- 1 a a 0 août  20 17:29 'a      b      '

Les grilles de l'installateur https://doc.ubuntu-fr.org/tutoriel/inst … _subiquity
"gedit admin:///etc/fstab" est proscrit,  utilisez "pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY xdg-open /etc/fstab" Voir  https://doc.ubuntu-fr.org/gedit
Les partitions EXT4 des disques externes => https://forum.ubuntu-fr.org/viewtopic.p … #p22697248

Hors ligne

#19 Le 20/08/2023, à 17:29

Hizoka

Re : [Résolu] Supprimer les emojis des noms de fichiers

Lors de mes tests ça fonctionnait aussi sans le -n....


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#20 Le 20/08/2023, à 18:58

Jarodd

Re : [Résolu] Supprimer les emojis des noms de fichiers

J'ai probablement merdouillé lors de mes tests.
Je viens de tout refaire, en retéléchargeant le fichier (source).
Après téléchargement du fichier, j'ai :

$ ll Ninjago\ |\ L\'amulette\ de\ foudre\ ⚡️Saison\ 13.mp4.mp4 
-rw-rw-r-- 1 jarodd jarodd 112330843 juil. 11  2022 "Ninjago | L'amulette de foudre ⚡️Saison 13.mp4"
$

Commande rename avec -n :

$ rename -n "s/[^[:alnum:] _.'-]//g" Ninjago\ |\ L\'amulette\ de\ foudre\ ⚡️Saison\ 13.mp4 
rename(Ninjago | L'amulette de foudre ⚡️Saison 13.mp4, Ninjago  L'amulette de foudre Saison 13.mp4)
$

Puis commande rename sans -n :

$ rename "s/[^[:alnum:] _.'-]//g" Ninjago\ |\ L\'amulette\ de\ foudre\ ⚡️Saison\ 13.mp4 
$

Résultat final :

$ ll Ninjago\ \ L\'amulette\ de\ foudre\ Saison\ 13.mp4 
-rw-rw-r-- 1 jarodd jarodd 112330843 juil. 11  2022 "Ninjago  L'amulette de foudre Saison 13.mp4"
$

Donc c'est ok pour la suppression de l'emoji smile
Est-il possible de remplacer les espaces par des tirets bas " _ ", et l'apostrophe par un tiret moyen " - " ?


Ubuntu 22.04.3 LTS (64 bits)

Hors ligne

#21 Le 20/08/2023, à 20:39

Hizoka

Re : [Résolu] Supprimer les emojis des noms de fichiers

rename -n "s/[^[:alnum:] _.'-]//g; s/ /_/g; s/'/-/g" *
rename(Ninjago | L'amulette de foudre ⚡Saison 13.mp4, Ninjago__L-amulette_de_foudre_Saison_13.mp4)

KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#22 Le 20/08/2023, à 20:55

Jarodd

Re : [Résolu] Supprimer les emojis des noms de fichiers

Super ! Solution adoptée, merci bcp smile


Ubuntu 22.04.3 LTS (64 bits)

Hors ligne

#23 Le 22/08/2023, à 18:35

Jarodd

Re : [Résolu] Supprimer les emojis des noms de fichiers

Bonjour,
Je reviens sur la commande rename, comment lire l'expression régulière svp ?

rename -n "s/[^[:alnum:] _.'-]//g; s/ /_/g; s/'/-/g" *

^[:alnum:]       ceci doit être "ce qui commence par les caractères alphanumériques", auxquels on ajoute l'espace, le tiret bas, le point, l'apostrophe et le tiret moyen ?
Mais tout ceci est remplacé par "rien" (le "//") ? Alors que ce sont les "autres" caractères qui sont supprimés. Donc je ne comprends pas bien le fonctionnement.


Ubuntu 22.04.3 LTS (64 bits)

Hors ligne

#24 Le 22/08/2023, à 20:14

pingouinux

Re : [Résolu] Supprimer les emojis des noms de fichiers

Bonsoir,
C'est le ^, en tête de la liste de caractères, qui indique qu'il faut tenir compte de tous les caractères, sauf ceux de la liste.

Hors ligne

#25 Le 22/08/2023, à 20:39

Jarodd

Re : [Résolu] Supprimer les emojis des noms de fichiers

D'accord merci smile


Ubuntu 22.04.3 LTS (64 bits)

Hors ligne