Lorsque vous travaillez avec Linux, vous pouvez rencontrer des utilitaires et des applications qui ne fonctionnent qu'avec des noms de fichiers qui n'incluent pas d'espaces. Nous n'enregistrons pas toujours les fichiers dans ce format "sans espace" et nous devrons peut-être rechercher une solution de contournement qui remplace les espaces dans les noms de fichiers par des caractères de soulignement "_". De cette façon, vos noms de fichiers ne contiendront aucun espace et vous pourrez facilement les utiliser dans toutes les applications.
Dans cet article, nous vous expliquerons deux façons de convertir tous les espaces dans les noms de fichiers en traits de soulignement, très simplement via la ligne de commande.
Nous avons exécuté les commandes et procédures mentionnées dans cet article sur un système Ubuntu 18.04 LTS.
Mon dossier Téléchargements, que j'utiliserai comme exemple pour cet article, contient des espaces dans tous les noms de fichiers.
$ ls Downloads
J'utiliserai ce dossier pour expliquer comment convertir les noms de fichiers dans un nouveau format.
Méthode 1 :via une seule commande mv
Dans cette méthode, nous utiliserons la commande Ubuntu mv dans une boucle for afin de renommer tous les fichiers/dossiers d'un répertoire donné afin que tous les espaces dans leurs noms soient remplacés par des caractères de soulignement.
Ouvrez votre ligne de commande Ubuntu, le Terminal, soit via la recherche du lanceur d'applications, soit via le raccourci Ctrl+Alt+T.
Voici la syntaxe de la commande que vous utiliserez :
$ for file in *; do mv "$file" `echo $file | tr ' ' '_'` ; done
J'ai exécuté la même commande pour remplacer les espaces par des traits de soulignement dans mon dossier Téléchargements :
Lorsque j'ai de nouveau répertorié le contenu du répertoire, vous pouvez voir que tous les noms de fichiers contiennent désormais des traits de soulignement au lieu d'espaces.
Méthode 2 :Utiliser un script pour renommer des fichiers
Dans cette méthode, nous utiliserons un script bash qui utilise la commande mv afin de renommer les noms de fichiers et de dossiers de manière à ce que tous les espaces soient remplacés par des traits de soulignement.
Ouvrez l'application Terminal et déplacez-vous vers le dossier bin comme suit :
$ cd ~bin
Maintenant, ouvrez un nouveau fichier de script dans l'un de vos éditeurs de texte préférés. Nous allons utiliser l'éditeur nano afin d'ouvrir un fichier de script vide du nom de replace_spaces.sh
$ sudo nano replace_spaces.sh
Dans ce fichier vide, ajoutez le script suivant :
#!/bin/bash for f in * do new="${f// /_}" if [ "$new" != "$f" ] then if [ -e "$new" ] then echo not renaming \""$f"\" because \""$new"\" already exists else echo moving "$f" to "$new" mv "$f" "$new" fi fi done
Astuce : Au lieu de taper tout le script dans votre fichier bash, vous pouvez le copier à partir d'ici et le coller dans le terminal en utilisant Ctrl+Maj+V, ou en utilisant l'option Coller du menu contextuel.
Voici à quoi ressemblera votre fichier :
Maintenant, quittez le fichier via le raccourci Ctrl + X et enregistrez le fichier sur le "Enregistrer le tampon modifié?" invite en tapant Y puis en appuyant sur Entrée.
Afin de faire de ce fichier un script exécutable, exécutez la commande suivante dans votre Terminal :
$ sudo chmod +x replace_spaces.sh
Vous êtes maintenant prêt à utiliser le script dans n'importe lequel de vos dossiers.
Lorsque j'exécute le script dans mon exemple de dossier Téléchargements, je vois tous les espaces dans mes noms de fichiers convertis en traits de soulignement comme suit :
Donc, ce sont les deux façons par lesquelles vous pouvez renommer les fichiers afin que tous les espaces dans leurs noms soient convertis en traits de soulignement. Désormais, toute application que vous utilisez ne manquera pas de reconnaître les noms de fichiers contenant des espaces.