Bonjour,
je voudrai remplacer les espaces blanches d'une arborescence par des underscores de manière systématique. Je pense utiliser d'abord find pour localiser les noms de fichier, puis utiliser ce script pour renommer le fichier.
Par contre, je ne sais pas comment trouver l'expression régulière signifiant « chaîne de caractère avec au moins un espace » et l'utiliser avec find. Merci beaucoup.
# Espace
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 6.
# utiliser autre chose
Posté par NeoX . Évalué à 4.
# Fait
Posté par dave . Évalué à 2.
find ./ -type f -name *' '* -exec r_space.sh '{}' ';'
avec r_space.sh qui est
#! /bin/bash
# Removes spaces in filenames (replaces them with underscore)
# Thu, 18 Oct 2007 21:34:45 -0400
for file in "${1}";
do
echo Converting "$file" to "${file// /_}"
mv "$file" "${file// /_}"
done
Merci beaucoup.
Systemd, the bright side of linux, toward a better user experience and on the road to massive adoption of linux for the desktop.
[^] # Encore plus simple
Posté par saintamand . Évalué à 7.
find . -execdir rename 's/ /_/g' {} +
Eventuellement ajouter l'option -n à rename pour éviter une bêtise.
[^] # Re: Fait
Posté par NBaH . Évalué à 2.
find ./ -type f -name "* *" -exec r_space.sh {} +
r_space.sh :
#! /bin/bash
\; retourne les fichiers un à un, donc itérer avec une boucle for n'est pas utileecho "fichiers trouvés : $@"
for file
do echo Converting "$file" to "${file// /_}"
mv "$file" "${file// /_}"
done
+ retourne tous les fichiers trouvés d'un coup
[^] # Re: Fait
Posté par Obsidian . Évalué à 2.
find . -iname '* *' | while read i ; do echo mv $i ${i// /_} ; done
[^] # Re: Fait
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 2.
[^] # Re: Fait
Posté par Obsidian . Évalué à 1.
C'est une vieille habitude et un oubli au moment de la recopie.
[^] # Re: Fait
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 2.
[^] # Re: Fait
Posté par dave . Évalué à 2.
Systemd, the bright side of linux, toward a better user experience and on the road to massive adoption of linux for the desktop.
[^] # Re: Fait
Posté par netsurfeur . Évalué à 2.
Oui.
Parce que c'est effectivement la technique que j'ai utilisé dans mes débuts, mais maintenant je fais beaucoup de « bashitude » (pardon pour le néologisme), je me demande si j'ai tort.
Ça dépend.
Si tu es sûr que tu disposeras toujours de bash pas de problème.
Sinon, il faut faire attention.
Quand Debian a remplacé bash par dash (plus léger) comme shell par défaut au démarrage, il y a eu des surprises :(
[^] # Re: Fait
Posté par dave . Évalué à 2.
Quand Debian a remplacé bash par dash (plus léger) comme shell par défaut au démarrage, il y a eu des surprises :(
Je pense en effet qu'écrire du code shell portable est bien meilleur. Ça peut être plus compliqué, mais on ne sait jamais sur quel shell on va tomber (expérience vécue). De plus ça évite également de devoir ré-apprendre le manuel du nouveau shell à disposition…
Systemd, the bright side of linux, toward a better user experience and on the road to massive adoption of linux for the desktop.
[^] # Re: Fait
Posté par netsurfeur . Évalué à 2.
Ça dépend pour qui.
Moi, j'ai appris le shell dans les années 80 (donc Bourne shell, le vrai).
Il est probablement moins efficace que bash mais je n'ai jamais été bloqué (avec sed, grep, awk et compagnie, on s'en sort toujours).
C'est quand je tombe sur des scripts spécifiques Bash que je dois lire la doc :(.
# Detox
Posté par claudex . Évalué à 2.
« Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.