C'est toujours plus simple de travailler sur des fichiers n'ayant pas d'espace dans leur nom, alors voici un petit script qui permet de remplacer à la volée les espaces par des "_".
#!/bin/sh # Suppression des blancs dans les noms des # fichiers du répertoire courant et remplacement # par des "_" factorisés. # Mémoire à Jeanmm pour ce script. for a in * ;do b=$(echo "$a" | tr " " _ | tr --squeeze-repeats _ _ ) if [ "$a" != "$b" ] ; then echo "mv \"$a\" $b" mv "$a" $b fi done
On peut améliorer le script pour remplacer également les accents (é, è, à, ô, û; ù...)
D'une manière générale, il est préférable d'éviter les accents et espaces sur les noms de fichier, c'est un principe de base.
Rappel: on rend exécutable un script par un "chmod +x" et on le lance par un "./nom_du_script".
Base d'une boucle (for, do, done) et d'un script: Punition de mon fils
3 réactions
1 De Thierry - 08/01/2017, 01:52
Il y a aussi detox sous linux qui remplace les espaces et les caractères accentués ; exemple, pour tous les fichiers du dossier courant :
detox -s lower *
bye
2 De Soul - 07/12/2020, 19:24
Très intéressé par cette démonstration. N'étant pas un pro, loin s'en faut, de la pratique des lignes de commande, j'aurais apprécié votre aide...
J'utilise actuellement ubuntu 20.04.
J'ai des milliers de fichiers où le caractère ":" apparaît dans la dénomination; or lors de mes tentatives de sauvegarde via Grsync, cette application refuse purement et systématiquement de sauvegarder les fichiers où apparaît ce ":" qui est pourtant souvent utilisé notamment lorsque la date avec heure, minute et seconde est signifiée sur le mode "aaaammjj hh:mm:ss"
Alors comment faire:
- rendre les ":" acceptable par Grsync ?
ou
- en amont, avant la sauvegarde par Grsync si l'option n°1 n'est pas possible, supprimer le ":" ou le remplacer par un autre caractère comme "_" par exemple ?
Merci d'avance
3 De Sima78 - 08/12/2020, 14:25
@Soul
Bonjour,
le mieux est d'oublier certains caractères dans les noms de fichier.
Je m'en tiens à l’alphanumérique non accentué avec des - ou _
Dans ton cas il suffit de remplacer dans le script la partie
tr " " _
par
tr ":" _
ou
tr ":" -