👩‍🔬 En mars, soulignons le mois de l'histoire des femmes 🙋‍♀️

Potion Bottle Icon Manuel d'alchimie du code Potion Bottle Icon

Répertoires alphabétiques avec Bash

418 mots - Temps de lecture estimé: 2 minutes

Je te partage aujourd'hui un script dans le langage bash qui va te permettre de classer un répertoire de fichiers dans des sous-répertoires alphabétiques. Plus un répertoire contient de fichiers, plus il devient long à traiter.

Ces instructions sont valides pour macOS, Linux ou si tu utilises le sous-système Windows pour Linux (WSL).

Voici pourquoi je te recommande cette pratique. À chaque fois qu'un ordinateur entre dans un répertoire, il doit lire tout son index pour pouvoir déterminer la position de chaque fichier sur un disque dur. C'est une opération qui prend un temps proportionnel au nombre de fichiers et de dossiers qu'il contient.

Si on sépare les fichiers dans des sous-répertoires alphabétiques, le traitement est beaucoup plus rapide, parce qu'il va y avoir seulement 26 répertoires au premier niveau, et chacun de ceux-ci va contenir en moyenne 26x moins de fichiers !

Le navigateur de fichiers Dolphin de KDE qui affiche une séquence de répertoires alphabétiques

Le navigateur de fichiers Dolphin de KDE

🌘 À vos terminaux !

C'est ce que nous allons faire ici en utilisant la ligne de commande bash (ou zsh, avec le superbe Oh My Zsh, fortement recommandé, surtout sur macOS).

On définit tout d'abord la séquence des répertoires que l'on veut créer (qu'on appellera prefix, car se sont les préfixe des fichiers à classer). On peut aussi ajouter des chiffres ou d'autres caractères dans cette séquence.

Note qu'ici, j'assume que tous les noms de fichiers sont en minuscules.

# Créer la liste des préfixes prefix=(a b c d e f g h i j k l m n o p q r s t u v w x y z)

On initialise un compteur à 1

# Initialiser le compteur i=1

Ensuite, on définit une boucle while de la longueur de notre liste de préfixes. Ici, c'est 26.

# Créer la boucle while [ ${i} -le 26 ]

À l'intérieur de cette boucle, nous allons effectuer ces trois opérations, pour chacun des préfixes que contient la séquence prefix.

# Lister les commandes à exécuter dans la boucle do
  # Créer un répertoire
  mkdir ${prefix[${i}]}
  # Déplacer les fichiers dans le bon répertoire
  mv ${prefix[${i}]}* ${prefix[${i}]}/
  # Incrémenter le compteur
  (( i++ )) done

Si on met tout ça ensemble, voici le résultat:

# Créer la liste des préfixes prefix=(a b c d e f g h i j k l m n o p q r s t u v w x y z)
# Initialiser le compteur i=1
# Créer la boucle while [ ${i} -le 26 ]
# Lister les commandes à exécuter dans la boucle do
  # Créer un répertoire
  mkdir ${prefix[${i}]}
  # Déplacer les fichiers dans le bon répertoire
  mv ${prefix[${i}]}* ${prefix[${i}]}/
  # Incrémenter le compteur
  (( i++ )) done

J'espère t'avoir aidé dans ton grand ménage du printemps informatique !

Pour découvrir Bash, je t'invite à suivre ce tutoriel sur Wikibooks.

🌘 Le monde de la ligne de commande t'intrigue ?

Une session de démarrage et un parcours d'apprentissage personnalisé avec mon service Consultation Express

🌘 Ces articles pourraient t'intéresser

Abonne-toi au flux RSS pour ne rien manquer.

Étiquettes