Contenu | Rechercher | Menus

Annonce

DVD, clés USB et t-shirts Ubuntu-fr disponibles sur la boutique En Vente Libre

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 19/11/2021, à 20:20

Jarodd

[Résolu] Renommer des fichiers avec des fractions dans leurs noms

Bonjour,
Au boulot on ne transmet parfois des fichiers de log qui sont nommés avec des fractions : 1/x, 2/x, etc..
fractions.png
Ne me demandez pas pourquoi, personne ne sait, ça a toujours été comme ça et "ça marche donc on change pas" roll

Je voudrais les renommer, en enlevant la fraction, et ne conserver que le numérateur (le premier chiffre). Je ne veux pas remplacer 1⁄23 (la fraction) par 1/23 vu qu'il ne faut pas de barre oblique dans un nom de fichier. Je voudrais avoir 1.txt, 2.txt, etc..
Dans un nautilus ou nemo, la fraction semble apparaître comme un seul caractère, comme dans l'image ci-dessus.
Dans le terminal, on dirait que 1/23 prend la place de 4 caractères.
J'ai essayé de les renommer en graphique (avec pyRenamer), et en commande :

$ echo "1⁄23.txt" | sed '⁄23//'
sed: -e expression n°1, caractère 1: commande inconnue: «  »

(j'ai fait un copié collé de "1⁄23" car je ne sais pas comment on tape une fraction big_smile)

Mais rien ne fonctionne et ça me saoûle. Je n'ai rien trouvé sur le web.
Est-ce que vous auriez une idée, un script, quelque chose pour avoir des fichiers correctement nommés ?
Merci pour votre aide.

Edit : résolu avec la commande du message #5

Dernière modification par Jarodd (Le 19/11/2021, à 22:07)


Ubuntu 20.04 LTS (64 bits)

Hors ligne

#2 Le 19/11/2021, à 21:01

Watael

Re : [Résolu] Renommer des fichiers avec des fractions dans leurs noms

salut,

les noms doivent être "encodés" autrement, car il n'est pas possible sur un système Linux d'avoir des barres obliques dans les noms de fichiers, puisque c'est l'indicateur de hiérarchie : /racine/dossier/fichier.

essaye un printf '%s\n' *.txt | od -c, dans le répertoire où sont ces fichiers, pour voir ce qu'est réellement le nom de ces fichiers.

Dernière modification par Watael (Le 19/11/2021, à 21:02)


Welcome to sHell. · eval is evil.

En ligne

#3 Le 19/11/2021, à 21:22

MicP

Re : [Résolu] Renommer des fichiers avec des fractions dans leurs noms

Bonjour

Ils ont peut-être utilisé les caractères unicode correspondants aux chiffres en indice et exposant
pour obtenir les noms de fichiers ¹⧸₂₃.txt à ²³⧸₂₃.txt
mais en fait, c'est totalement impossible à vérifier à partir d'une image.

C'est pour ça qu'il est très souvent beaucoup plus efficace de transmettre des informations au format texte,
comme par exemple le retour de la commande ls qui permettrait d'afficher le nom de chacun de ces fichiers au format texte
et de pouvoir ensuite les copier/coller dans un de tes messages sur ce forum.

J'aurais pu te donner un exemple de ligne de commande pour faire ça,
mais il m'est impossible de savoir quel est le chemin du répertoire qui est listé dans ton image.

=======
Pour la barre oblique, j'ai utilisé le caractère unicode nommé BIG SOLIDUS (U+29F8)

Pour les chiffres :
Exposant :
U+2070  ⁰
U+00B9  ¹
U+00B2  ²
U+00B3  ³
U+2074  ⁴
U+2075  ⁵
U+2076  ⁶
U+2077  ⁷
U+2078  ⁸
U+2079  ⁹

Indice :
U+2080  ₀
U+2081  ₁
U+2082  ₂
U+2083  ₃
U+2084  ₄
U+2085  ₅
U+2086  ₆
U+2087  ₇
U+2088  ₈
U+2089  ₉

Dernière modification par MicP (Le 19/11/2021, à 21:41)


Retour utilisable de commande
2.d  Le prompt final : - permet de s'assurer que la commande est allée à son terme,- permet de s'assurer que la réponse du système n'est pas coupée à la fin,- et fournit parfois d'autres informations, détaillées au message #42

Hors ligne

#4 Le 19/11/2021, à 21:45

Jarodd

Re : [Résolu] Renommer des fichiers avec des fractions dans leurs noms

@watael voici le retour de la commande :

$ printf '%s\n' *.txt | od -c
0000000   1   0 342 201 204   2   3   .   t   x   t  \n   1   1 342 201
0000020 204   2   3   .   t   x   t  \n   1   2 342 201 204   2   3   .
0000040   t   x   t  \n   1 342 201 204   2   3   .   t   x   t  \n   1
0000060   3 342 201 204   2   3   .   t   x   t  \n   1   4 342 201 204
0000100   2   3   .   t   x   t  \n   1   5 342 201 204   2   3   .   t
0000120   x   t  \n   1   6 342 201 204   2   3   .   t   x   t  \n   1
0000140   7 342 201 204   2   3   .   t   x   t  \n   1   8 342 201 204
0000160   2   3   .   t   x   t  \n   1   9 342 201 204   2   3   .   t
0000200   x   t  \n   2   0 342 201 204   2   3   .   t   x   t  \n   2
0000220   1 342 201 204   2   3   .   t   x   t  \n   2   2 342 201 204
0000240   2   3   .   t   x   t  \n   2 342 201 204   2   3   .   t   x
0000260   t  \n   2   3 342 201 204   2   3   .   t   x   t  \n   3 342
0000300 201 204   2   3   .   t   x   t  \n   4 342 201 204   2   3   .
0000320   t   x   t  \n   5 342 201 204   2   3   .   t   x   t  \n   6
0000340 342 201 204   2   3   .   t   x   t  \n   7 342 201 204   2   3
0000360   .   t   x   t  \n   8 342 201 204   2   3   .   t   x   t  \n
0000400   9 342 201 204   2   3   .   t   x   t  \n
0000413

Je suppose que 1   0 342 201 204   2   3   .   t   x   t
est équivalent à 1 / 23 . t x t

@MicP voici le retour du ls :

-rw-rw-r-- 1 jarodd jarodd 444 nov.  19 18:58 10⁄23.txt
-rw-rw-r-- 1 jarodd jarodd 433 nov.  19 18:59 11⁄23.txt
-rw-rw-r-- 1 jarodd jarodd 444 nov.  19 18:59 12⁄23.txt
-rw-rw-r-- 1 jarodd jarodd 755 nov.  19 18:59 1⁄23.txt
-rw-rw-r-- 1 jarodd jarodd 427 nov.  19 18:59 13⁄23.txt
-rw-rw-r-- 1 jarodd jarodd 418 nov.  19 18:59 14⁄23.txt
-rw-rw-r-- 1 jarodd jarodd 413 nov.  19 18:59 15⁄23.txt
-rw-rw-r-- 1 jarodd jarodd 413 nov.  19 18:59 16⁄23.txt
-rw-rw-r-- 1 jarodd jarodd 412 nov.  19 19:00 17⁄23.txt
-rw-rw-r-- 1 jarodd jarodd 428 nov.  19 18:59 18⁄23.txt
-rw-rw-r-- 1 jarodd jarodd 417 nov.  19 19:00 19⁄23.txt
-rw-rw-r-- 1 jarodd jarodd 449 nov.  19 19:00 20⁄23.txt
-rw-rw-r-- 1 jarodd jarodd 415 nov.  19 19:00 21⁄23.txt
-rw-rw-r-- 1 jarodd jarodd 418 nov.  19 19:00 22⁄23.txt
-rw-rw-r-- 1 jarodd jarodd 424 nov.  19 18:57 2⁄23.txt
-rw-rw-r-- 1 jarodd jarodd 425 nov.  19 19:00 23⁄23.txt
-rw-rw-r-- 1 jarodd jarodd 472 nov.  19 18:58 3⁄23.txt
-rw-rw-r-- 1 jarodd jarodd 425 nov.  19 18:57 4⁄23.txt
-rw-rw-r-- 1 jarodd jarodd 455 nov.  19 18:58 5⁄23.txt
-rw-rw-r-- 1 jarodd jarodd 427 nov.  19 18:58 6⁄23.txt
-rw-rw-r-- 1 jarodd jarodd 430 nov.  19 18:57 7⁄23.txt
-rw-rw-r-- 1 jarodd jarodd 421 nov.  19 18:57 8⁄23.txt
-rw-rw-r-- 1 jarodd jarodd 416 nov.  19 18:57 9⁄23.txt

J'espère que ça vous suffira (je tâtonne). Merci pour votre aide.


Ubuntu 20.04 LTS (64 bits)

Hors ligne

#5 Le 19/11/2021, à 22:03

MicP

Re : [Résolu] Renommer des fichiers avec des fractions dans leurs noms

Ils n'ont pas utilisé les indices et exposants,
mais, pour la barre de division, ils ont utilisé le caractère nommé FRACTION SLASH (U+2044)

=======
Cette ligne de commande affichera les lignes de commandes qui seraient exécutées
si la commande echo n'avait pas précédé la commande mv

for f in *.txt; do echo mv "$f" "${f%⁄*}.txt"; done

Donc, si ce qu'elle ferait te convient,
il te suffira de la lancer en enlevant la commande echo
comme ci-dessous :

for f in *.txt; do mv "$f" "${f%⁄*}.txt"; done

=======
Testé chez moi, ça donne :

michel@debbull:~/test$ touch {1..23}⁄23.txt; ls
10⁄23.txt  1⁄23.txt   15⁄23.txt  18⁄23.txt  21⁄23.txt  23⁄23.txt  5⁄23.txt  8⁄23.txt
11⁄23.txt  13⁄23.txt  16⁄23.txt  19⁄23.txt  22⁄23.txt  3⁄23.txt   6⁄23.txt  9⁄23.txt
12⁄23.txt  14⁄23.txt  17⁄23.txt  20⁄23.txt  2⁄23.txt   4⁄23.txt   7⁄23.txt
michel@debbull:~/test$ for f in *.txt; do echo mv "$f" "${f%⁄*}.txt"; done
mv 10⁄23.txt 10.txt
mv 11⁄23.txt 11.txt
mv 12⁄23.txt 12.txt
mv 1⁄23.txt 1.txt
mv 13⁄23.txt 13.txt
mv 14⁄23.txt 14.txt
mv 15⁄23.txt 15.txt
mv 16⁄23.txt 16.txt
mv 17⁄23.txt 17.txt
mv 18⁄23.txt 18.txt
mv 19⁄23.txt 19.txt
mv 20⁄23.txt 20.txt
mv 21⁄23.txt 21.txt
mv 22⁄23.txt 22.txt
mv 2⁄23.txt 2.txt
mv 23⁄23.txt 23.txt
mv 3⁄23.txt 3.txt
mv 4⁄23.txt 4.txt
mv 5⁄23.txt 5.txt
mv 6⁄23.txt 6.txt
mv 7⁄23.txt 7.txt
mv 8⁄23.txt 8.txt
mv 9⁄23.txt 9.txt
michel@debbull:~/test$ for f in *.txt; do mv "$f" "${f%⁄*}.txt"; done
michel@debbull:~/test$ ls
10.txt  12.txt  14.txt  16.txt  18.txt  1.txt   21.txt  23.txt  3.txt  5.txt  7.txt  9.txt
11.txt  13.txt  15.txt  17.txt  19.txt  20.txt  22.txt  2.txt   4.txt  6.txt  8.txt
michel@debbull:~/test$ 

Dernière modification par MicP (Le 19/11/2021, à 22:08)


Retour utilisable de commande
2.d  Le prompt final : - permet de s'assurer que la commande est allée à son terme,- permet de s'assurer que la réponse du système n'est pas coupée à la fin,- et fournit parfois d'autres informations, détaillées au message #42

Hors ligne

#6 Le 19/11/2021, à 22:05

nany

Re : [Résolu] Renommer des fichiers avec des fractions dans leurs noms

Bonjour,



for f in *.txt; do mv -v "$f" "${f//⁄[[:digit:]]*}"; done
À noter que ⁄≠/.

Dernière modification par nany (Le 19/11/2021, à 22:25)

Hors ligne

#7 Le 19/11/2021, à 22:07

Jarodd

Re : [Résolu] Renommer des fichiers avec des fractions dans leurs noms

Oui c'est parfait @MicP, ils sont bien renommés ! Merci bcp.

@nany j'essaye ta commande dès que je reçois de nouveaux fichiers wink


Ubuntu 20.04 LTS (64 bits)

Hors ligne

#8 Le 19/11/2021, à 22:14

MicP

Re : [Résolu] Renommer des fichiers avec des fractions dans leurs noms

Oui, celle de nany est plus sélective (bien plus mieux meilleure que la mienne, je trouve smile )
car elle supprime le caractère ⁄ et la suite de chiffres qui le suivent (=> jusqu'au point séparateur d'extension exclus)

Tandis que la mienne ne fait que supprimer le caractère  ⁄  et tout ce qui le suit (le point et le nom d'extension compris),
et ajoute ensuite le point et l'extension supprimées.

Dernière modification par MicP (Le 19/11/2021, à 22:23)


Retour utilisable de commande
2.d  Le prompt final : - permet de s'assurer que la commande est allée à son terme,- permet de s'assurer que la réponse du système n'est pas coupée à la fin,- et fournit parfois d'autres informations, détaillées au message #42

Hors ligne

#9 Le 19/11/2021, à 22:24

Jarodd

Re : [Résolu] Renommer des fichiers avec des fractions dans leurs noms

Ok je verrai à l'usage celle que j'appliquerai (je me ferai un petit script).
Un petit bonus serait d'ajouter un zéro pour les épisodes 1 à 9 (pour tous les avoir sur deux chiffres : 01, 02,... 09). C'est possible ?


Ubuntu 20.04 LTS (64 bits)

Hors ligne

#10 Le 19/11/2021, à 22:24

nany

Re : [Résolu] Renommer des fichiers avec des fractions dans leurs noms

Non, j’ai été trop vite. Je viens de tester et ça supprime l’extension.
Seule la solution de MicP fonctionne.

Hors ligne

#11 Le 19/11/2021, à 22:31

MicP

Re : [Résolu] Renommer des fichiers avec des fractions dans leurs noms

@nany

Bonsoir

Arghh ! Dommage, je n'avais pas pris le temps de tester ta proposition moi non plus…

Dernière modification par MicP (Le 19/11/2021, à 22:33)


Retour utilisable de commande
2.d  Le prompt final : - permet de s'assurer que la commande est allée à son terme,- permet de s'assurer que la réponse du système n'est pas coupée à la fin,- et fournit parfois d'autres informations, détaillées au message #42

Hors ligne

#12 Le 19/11/2021, à 22:37

nany

Re : [Résolu] Renommer des fichiers avec des fractions dans leurs noms

Jarodd a écrit :

Un petit bonus serait d'ajouter un zéro pour les épisodes 1 à 9 (pour tous les avoir sur deux chiffres : 01, 02,... 09). C'est possible ?

for f in *.txt; do mv -v "$f" $(printf "%02d.txt" "${f%⁄*}"); done

Dernière modification par nany (Le 19/11/2021, à 22:37)

Hors ligne

#13 Le 19/11/2021, à 23:01

geole

Re : [Résolu] Renommer des fichiers avec des fractions dans leurs noms

Jarodd a écrit :

Bonjour,
Au boulot on ne transmet parfois des fichiers de log qui sont nommés avec des fractions : 1/x, 2/x, etc..

Je voudrais les renommer, en enlevant la fraction, et ne conserver que le numérateur (le premier chiffre). Je ne veux pas remplacer 1⁄23 (la fraction) par 1/23 vu qu'il ne faut pas de barre oblique dans un nom de fichier. Je voudrais avoir 1.txt, 2.txt, etc..

Bonsoir.
D'abord bravo pour la solution du degré d'iinclinaison de la barre oblique.
Je trouve dommages que tu te moques de la quantité totale de fichiers. A mon avis c'est une technique pour savoir que le dernier fichier est bien présent et qu'ils le sont tous. Il devrait aussi être possible de renommer en
1 sur un total de 23
ou
00001_de_23
ou ?
Il ne devrait pas être très difficile de mettre le premier nombre avec des zéros à gauche.

Ajout. Je viens de voir que tu as déjà la réponse.

Dernière modification par geole (Le 19/11/2021, à 23:21)

En ligne

#14 Le 19/11/2021, à 23:16

Watael

Re : [Résolu] Renommer des fichiers avec des fractions dans leurs noms

le / "magique" n'apparaît pas sur le forum dans mon navigateur (min) :

mv "$f" "${f%$'\u2044'*}.txt"

Welcome to sHell. · eval is evil.

En ligne

#15 Le 20/11/2021, à 23:03

Jarodd

Re : [Résolu] Renommer des fichiers avec des fractions dans leurs noms

Merci pour l'ajout des zéros, c'est top ! smile


Ubuntu 20.04 LTS (64 bits)

Hors ligne