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 !
À 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
.
- Créer un nouveau répertoire avec mkdir
- Déplacer tous les fichiers qui débutent par le préfixe dans le répertoire
- Incrémenter le compteur de 1
# 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
Consultation Express 🧠
La consultation express, c’est une heure où je me consacre entièrement à résoudre tes problèmes informatiques avec toi.
Je peux t’aider avec des enjeux de gestion de données, de cybersécurité, de courriels et aussi orienter tes choix technologiques.