Changer en soulignés les espaces dans les noms de fichier ?

Message
Author
musher0
Posts: 14629
Joined: Mon 05 Jan 2009, 00:54
Location: Gatineau (Qc), Canada

Changer en soulignés les espaces dans les noms de fichier ?

#1 Post by musher0 »

(Ajout, 11 avril 2019 --
Script amélioré
ici
Fin de l'ajout)

~~~~~~~~~~~~~~~

Bonjour.

Voici un petit script qui fera à votre place un boulot ennuyant au possible !

S.v.p. lire les commentaires ? Ils répondront à la plupart de vos
questions. Sinon, posez-les ci-dessous ?

Je sais, il y a des utilitaires "rename-ceci", "rename-cela", et même les
"rename-utilities". Mais la plupart du temps, d'après l'expérience que j'en
ai, on a besoin de ce genre d'utilitaire pour remplacer des espaces par
des soulignés dans les noms de fichier de médias (albums de musique,
vidéos, films), parce qu'ils proviennent la plupart du temps du monde
CouineDose.

Pour les cas isolés, le gestionnaire de fichiers offre la fonction et en
général, cela suffit.

Alors voici.

J'ai fait exprès de rendre le script bavard : il dit soit le changement de
nom, soit que le fichier n'en a pas besoin. Comme ça, on ne se pose pas
de questions, on n'a pas besoin de contre-vérifier si ç'a été fait.

À+

~~~~~~~~~~~~~~~

Code: Select all

#!/bin/bash
# /root/my-applications/bin/espace-souligne.sh
#
# Objectif : Changer en soulignés les espaces dans les noms de fichier.
#
# Utilité : Surtout pour les titres de chansons et morceaux de musique.
#
# Usage : Lancer ce script sous terminal dans un répertoire qui
# ---------- contient des noms de fichier ayant un ou des espaces. 
#
# (c) musher0, 5 avril 2019. GPL3.
####
ls -1 --file-type > liste
while read A;do 
	if [ "$A" != "liste" ];then # Évident !
		if [ "$A" != "${A// /_}" ];then # Le fichier doit-il être renommé ?
			B="${A// /_}"
			mv -v "$A" $B # Le mode bavard est activé.
		else
			echo "$A : Ce fichier est correctement nommé."
		fi
	fi
done < liste
rm -f liste
Attachments
espace-souligne.sh.zip
Même script, zippé.
Déballer dans /root/my-applications/bin et rendre exécutable.
(616 Bytes) Downloaded 262 times
Last edited by musher0 on Thu 11 Apr 2019, 21:26, edited 1 time in total.
musher0
~~~~~~~~~~
"You want it darker? We kill the flame." (L. Cohen)

musher0
Posts: 14629
Joined: Mon 05 Jan 2009, 00:54
Location: Gatineau (Qc), Canada

#2 Post by musher0 »

Y a juste moi qui a eu le problème, faut croire...
musher0
~~~~~~~~~~
"You want it darker? We kill the flame." (L. Cohen)

oui

#3 Post by oui »

non, tu as totalement raison, ces espaces gênent en ligne de commande, c'est vrai (mais on peut les y remplacer par des soulignés ad hoc quand on en a besoin!). j'utilise le bon vieux Camel case car plus court...

User avatar
Médor
Posts: 1754
Joined: Sat 24 Jul 2010, 20:04
Location: France

#4 Post by Médor »

Code: Select all

root@pctoutou ~ 
# cd .moonchild\ productions/
root@pctoutou ~/.moonchild productions 
# ls
pale moon
root@pctoutou ~/.moonchild productions 
# cd pale\ moon/
root@pctoutou ~/.moonchild productions/pale moon 
# cd
root@pctoutou ~ 
# ls mon*
mon exemple.txt
root@pctoutou ~ 
# echo `cat mon\ exemple.txt`
Bla bla ;)
root@pctoutou ~ 
# 
[b][url=http://wellminded.net63.net/]Recherches Puppy[/url]|[url=http://puppylinux.org/wikka/PageIndex]Index Puppy[/url]|[url=http://smokey01.com/bruceb/france.html]Index FR[/url]|[url=http://toutoulinux.free.fr/tuto.php]Tuto Toutou[/url][/b]

musher0
Posts: 14629
Joined: Mon 05 Jan 2009, 00:54
Location: Gatineau (Qc), Canada

#5 Post by musher0 »

Je suis bien mal pris :
y en a un qui me niaise et
l'autre me parle de chameau casé...
musher0
~~~~~~~~~~
"You want it darker? We kill the flame." (L. Cohen)

User avatar
Médor
Posts: 1754
Joined: Sat 24 Jul 2010, 20:04
Location: France

#6 Post by Médor »

Code: Select all

root@pctoutou ~ 
# ls *exemple*
exemple de nom avec espaces.txt  mon exemple.txt
root@pctoutou ~ 
# echo `cat exemple\ de\ nom\ avec\ espaces.txt`
bis repetita ;)
root@pctoutou ~ 
# echo `cat "exemple de nom avec espaces.txt"`
bis repetita ;)
root@pctoutou ~ 
#
[b][url=http://wellminded.net63.net/]Recherches Puppy[/url]|[url=http://puppylinux.org/wikka/PageIndex]Index Puppy[/url]|[url=http://smokey01.com/bruceb/france.html]Index FR[/url]|[url=http://toutoulinux.free.fr/tuto.php]Tuto Toutou[/url][/b]


User avatar
Médor
Posts: 1754
Joined: Sat 24 Jul 2010, 20:04
Location: France

#8 Post by Médor »

@ oui :

T'as un problème avec les noms de fichiers avec espace(s) au format *nix ;)

Médor.
[b][url=http://wellminded.net63.net/]Recherches Puppy[/url]|[url=http://puppylinux.org/wikka/PageIndex]Index Puppy[/url]|[url=http://smokey01.com/bruceb/france.html]Index FR[/url]|[url=http://toutoulinux.free.fr/tuto.php]Tuto Toutou[/url][/b]

oui

#9 Post by oui »

M�dor wrote:@ oui :

T'as un problème avec les noms de fichiers avec espace(s) au format *nix ;)

Médor.
non, pas réellement: il suffit de remplacer l'espace/chaque espace pour un espace souligné. énervant, c'est quand on est en ligne de commande, et, par manie, continuerait par simplification en ligne de commande par ex. lors de l'usage en ligne de commande de youtube-dl dont les fichiers téléchargés contiennent souvent pas mal de tels espaces, par exemple 'Joseph Pilates Archive-POGCbV3Q-1k.mp4' (tiens! je remarque pour la première fois que deepin fournit dans le résultat de «ls» des apostrophes devant et dierrière! peut-être est-ce la solution? test immédiat: oui, c'est la solution et rien à faire qu'à marquer avec la souris et cliquer sur la molette:

Code: Select all

cp 'Joseph Pilates Archive-POGCbV3Q-1k.mp4' ~/downloads/
ça fonctionne :wink:

tiens, il ne manquerait plus que wget soit aussi complété automatiquement (je crois de --no-check-certificate , une horreur la page wget --help !) pour pouvoir télécharger de sites sécurisés...

User avatar
Médor
Posts: 1754
Joined: Sat 24 Jul 2010, 20:04
Location: France

#10 Post by Médor »

Voir mes lignes en bash précédentes ;)

Médor.
[b][url=http://wellminded.net63.net/]Recherches Puppy[/url]|[url=http://puppylinux.org/wikka/PageIndex]Index Puppy[/url]|[url=http://smokey01.com/bruceb/france.html]Index FR[/url]|[url=http://toutoulinux.free.fr/tuto.php]Tuto Toutou[/url][/b]

oui

#11 Post by oui »

ok, merci!

User avatar
Médor
Posts: 1754
Joined: Sat 24 Jul 2010, 20:04
Location: France

#12 Post by Médor »

De rien.

Médor.

musher0
Posts: 14629
Joined: Mon 05 Jan 2009, 00:54
Location: Gatineau (Qc), Canada

#13 Post by musher0 »

@oui :

S'il faut installer tout le langage Camel (~ 500 Mo, si ma mémoire est bonne)
pour faire quelques substitutions de caractère... je préfère ma méthode !

@Médor :
Ben oui, ben oui, y a longtemps que tous le monde sait ça ! :)

À+
musher0
~~~~~~~~~~
"You want it darker? We kill the flame." (L. Cohen)

oui

#14 Post by oui »

musher0 wrote:@oui :

S'il faut installer tout le langage Camel (~ 500 Mo, si ma mémoire est bonne)
pour faire quelques substitutions de caractère... je préfère ma méthode !
eh, Christian, arrête! CamelCase est LE standard du grand standard de Puppy depuis la nuit des temps, didiwiki (regarde les instructions dans la page Help de didiwiki, est dans toutes les versions de Puppy :wink: )

et tu sais parfaitement que didiwiki est l'exemple de microbe en encombrement. Tu écrits tous les mots comme les romains sur leurs vieilles stèles, accolés l'un a l'autre, sans espace ni ponctuation, et CamelCase sachant que l'homo sapiens moderne est plus bête que les vieux romains, l'aide en commençant chaque mot par une majuscule, c'est tout!

musher0
Posts: 14629
Joined: Mon 05 Jan 2009, 00:54
Location: Gatineau (Qc), Canada

#15 Post by musher0 »

Valise à chameau ? Sur le modèle "attaché case" ? Un bagage qu'on attache
sur un « chameau-cargo » ?

Désolé. Jamais utilisé didiwiki. Je ne sais vraiment pas de quoi tu parles.

Quoi qu'il en soit... ce n'est pas de la plus grande importance. Tu te
débrouilles avec ta valise à chameau, je me débrouille avec mon script et
Médor se débrouille avec ses « répétitas ».

Comme ça, tout le monde fait ce qu'il veut avec les espaces dans les noms
de fichiers, et tout le monde il est content.

Et je sors de cette maison de fous mes jambes à mou cou !!!
musher0
~~~~~~~~~~
"You want it darker? We kill the flame." (L. Cohen)

User avatar
fabrice_035
Posts: 765
Joined: Mon 28 Apr 2014, 17:54
Location: Bretagne / France

#16 Post by fabrice_035 »

[ EDIT ] SOLUTION PLUS BAS

Salut,

Comme tu as fais un script j'ai cherché les autres solutions existantes et elles sont nombreuses mais surtout j'ai découvert que certains proposent d'utiliser le programme rename (connu de tous) car il intègrerait, entre autres, la fonction que tu proposes avec du script Perl.

J'ai alors testé les exemples que l'on peut trouver un peu partout et ici
https://www.computerhope.com/unix/rename.htm

Bien évidemment ça ne fonctionne absolument pas. J'ai découvert que rename sur ma puppy était dans une version obsolète (comme beaucoup de choses dans les puppy's)

Alors ici
https://cdn.kernel.org/pub/linux/utils/ ... nux/v2.33/
on trouve la version la plus récente = 2.33

J'ai donc compilé et testé de nouveau les exemples cités plus haut. Et le résultat est le même, rename ne bronche pas, ne renvoi aucune erreur, mais ne fait rien.
Alors c'est un mystère. :roll: Peut être que Perl n'est pas dans la bonne version. :?:

A+

(edit)

Bon donc comme souvent en écrivant la question la réponse arrive. J'ai donc cherché une version plus récente de Perl et je tombe la-dessus

https://packages.debian.org/fr/jessie/i ... l/download

En fouinant dans l'archive dans le dossier /usr/bin il y a un programme "prename" qui est un script Perl qui fonctionne tel que les exemples le montre. Je n'ai pas étudié toutes les subtilité mais ça me semble très efficace. Donc il faut remplacer rename (ou faire un link) par prename.

Exemple : Remplacer tous les espaces par underscore de tous les fichiers du dossier

Code: Select all

rename 's/ /_/g' *
Comme d'hab on peut faire un pipe de find vers rename.

++
Bionicpup64-8.0 _ Kernel 5.4.27-64oz _ Asus Rog GL752

musher0
Posts: 14629
Joined: Mon 05 Jan 2009, 00:54
Location: Gatineau (Qc), Canada

#17 Post by musher0 »

Comme d'hab on peut faire un pipe de find vers rename.
Dit comme ça, on dirait que ça vient d'un film cochon ! MDR :lol:

Mais excellente recherche, Fabrice. Merci.
musher0
~~~~~~~~~~
"You want it darker? We kill the flame." (L. Cohen)

oui

#18 Post by oui »

musher0 wrote:Désolé. Jamais utilisé didiwiki. Je ne sais vraiment pas de quoi tu parles.
ben, oui! c'est embêtant de développer et de ne même pas connaître ce qu'on dévelope, cela conduit à des réalisations comme busterPup (je ne veux pas remettre de l'huile sur le feu, mais c'est la réalité: on nous supprime ou change considérablement de très vieux trucs de Puppy, bien rodés, bien huilés comme Rox, mais n'en connait même pas les ressources essentielles dans Puppy, et, oh, horreur, nous met en remplacement un prétendu "rox" qui ne ressemble pas du tout au rox de Puppy, avec un maniement totalement différent, en prétendant que c'est rox, alors que rox, je l'utilise dans Buster (pleine installation de Debian) et dans Deepin (2ième pleine installation) et il est absolument identique à celui de Puppy et non pas de busterPup...

... parce que vous connaissez TRÈS MAL les propriétés géniales de VOTRE DISTRIBUTION que vous prétendez vouloir rénover!

essaie didiwiki, il n'est peut-être plus dans busterPup, je ne me rappelle plus, mais il est dans tous les BONS Puppy's et ça ne prend que 10 minutes...

musher0
Posts: 14629
Joined: Mon 05 Jan 2009, 00:54
Location: Gatineau (Qc), Canada

#19 Post by musher0 »

Tiens-toi-z-en donc au sujet du fil au lieu de déblatérer sur la création de
josejp2424, notre meilleur développeur.

Donc, grand amateur d'esquives, ta « valise à chameau » (ton "CamelCase"),
elle fait comment pour transformer les espaces en soulignés, encore ?

Ah, Je sais. Le caravanier met la valise entre les deux bosses du chameau.
Et voilà : il n'y a plus d'espace, il y a une manière de souligné. MDR. :lol:
musher0
~~~~~~~~~~
"You want it darker? We kill the flame." (L. Cohen)

musher0
Posts: 14629
Joined: Mon 05 Jan 2009, 00:54
Location: Gatineau (Qc), Canada

#20 Post by musher0 »

Rebonjour.

Je récidive, relapse, rechute, rapplique... :)

Je vous laisse le choix du verbe selon l'opinion que vous avez de ce
que je fais !

J'ai ajouté dans cette évolution de mon script initial (au remplacement
des espaces par des soulignés), quelques combinaisons de caractères
qu'on trouve fréquemment dans les titres de chansons et médias, et
même dans des titres de sites Web.

Code: Select all

#!/bin/bash
# /root/my-applications/bin/espace-souligne.sh
#
# Objectif : Changer en soulignés les espaces dans les noms de fichier
# ------------- et remplacer d'autres caractères gênants dans des titres.
#
# Utilité : Surtout pour les titres de chansons et morceaux de musique.
#
# Usage : Lancer ce script sous terminal dans un répertoire qui
# ----------- contient des noms de fichier ayant un ou des espaces.
#
# (c) musher0, 5 et 11 avril 2019. GPL3.
####
ls -1 --file-type > liste
while read A;do
	if [ "$A" != "liste" ];then # Évident !
		C="$A"
		[ "${C// /_}" != "$C" ] && C="${C// /_}" # espaces remplacées par souligné.
# Cette ligne trouvée sur le forum StackExchange.
# Les autres lignes sont de moi.
		[ "${C//_-_/-}" != "$C" ] && C="${C//_-_/-}" # «_-_» remplacé par tiret;
		[ "${C//\'/-}" != "$C" ] && C="${C//\'/-}" # apostrophe remplacé par tiret.
		[ "${C//|/-}" != "$C" ] && C="${C//|/-}" # barre verticale remplacée par tiret.
		# Autres ?
		[ "$C" != "$A" ] && mv -f "$A" "$C" # Changement de nom au besoin. # Merci à phat7 pour son oeil de lynx !
	else
		echo "$A : Ce fichier est correctement nommé."
	fi
done < liste
rm -f liste
C'est donc une « empiration » ou une amélioration, selon votre point de vue.
Et si vous croyez que c'est totalement inutile, c'est votre choix aussi !

Par contre, le « germe » de code bash pour le remplacement vient de
quelqu'un qui l'a mis sur le forum StackExchange. Il faut donc que ça ait
une certaine valeur, si c'est sur StackExchange.

Et puis la possibilité de tels remplacements existe depuis des lustres dans
bash même. En fin de compte je n'ai pas inventé grand chose.

Dans l'espoir, nez en moins et ce, pendant, :lol: d'être utile à quelqu'un !
Attachments
espace-souligne-2.sh.zip
(783 Bytes) Downloaded 260 times
Last edited by musher0 on Fri 12 Apr 2019, 03:07, edited 1 time in total.
musher0
~~~~~~~~~~
"You want it darker? We kill the flame." (L. Cohen)

Post Reply