Recherche de site Web

Comment remplacer les espaces dans les noms de fichiers par des traits de soulignement sur le shell Linux


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 travailler avec eux dans toutes les applications.

Dans cet article, nous vous expliquerons deux façons de convertir très simplement tous les espaces des noms de fichiers en traits de soulignement via la ligne de commande.

Nous avons exécuté les commandes et procédures mentionnées dans cet article sur un système Ubuntu 22.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 pour 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 et utiliserons echo pour afficher la progression.

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 à 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 pour 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 utiliserons l'éditeur nano afin d'ouvrir un fichier 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 saisir l'intégralité du script dans votre fichier bash, vous pouvez le copier à partir d'ici et le coller dans le terminal en utilisant Ctrl+Shift+V ou en utilisant l'option Coller à droite. cliquez sur menu.

Voici à quoi ressemblera votre fichier :

Maintenant, quittez le fichier via le raccourci Ctrl+X et enregistrez le fichier dans le dossier « Enregistrer le tampon modifié ? " en tapant Y puis en appuyant sur Entrée.

Pour 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 :

Voici donc les deux manières 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.

Articles connexes: