Informatique

Trier automatiquement votre dossier Téléchargements avec un script Bash

Un script de vingt lignes suffit à ranger vos fichiers par type, chaque semaine, sans y penser. Idéal pour découvrir le Bash sans se noyer dans la théorie.

Illustration d’une fenêtre de terminal sombre contenant des lignes de commandes vertes et grises, entourée de formes bleues.
  • Niveau Intermédiaire
  • Durée 40 minutes

Votre dossier Téléchargements ressemble à un grenier ? Plutôt que de le trier à la main une fois par an, confiez la tâche à un script. Vous allez écrire un petit programme Bash qui déplace les images, documents, archives, vidéos et fichiers audio dans des sous-dossiers, avec un mode simulation pour ne rien casser.

Avant de commencer

  • Linux, macOS ou Windows avec WSL
  • Savoir ouvrir un terminal et se déplacer dans les dossiers
  • Un éditeur de texte
  1. Étape 1 : Créer le fichier du script

    Dans votre dossier personnel, créez un répertoire bin pour vos scripts, puis le fichier lui-même :

    Terminal
    mkdir -p ~/bin
    nano ~/bin/trier-telechargements.sh
  2. Étape 2 : Écrire le script

    Collez le contenu ci-dessous. La première ligne (le shebang) indique quel interpréteur utiliser ; set -euo pipefail arrête le script à la moindre erreur ; la fonction trier déplace les fichiers correspondant à des motifs vers un dossier cible.

    trier-telechargements.sh
    #!/usr/bin/env bash
    # Range un dossier par type de fichier.
    set -euo pipefail
    
    DOSSIER="${1:-$HOME/Téléchargements}"   # dossier à trier (argument facultatif)
    SIMULATION="${SIMULATION:-1}"           # 1 = affiche seulement, 0 = déplace
    
    shopt -s nullglob nocaseglob            # motifs vides ignorés, casse indifférente
    
    trier() {
      local cible="$1"; shift
      local motif fichier
      for motif in "$@"; do
        for fichier in "$DOSSIER"/$motif; do
          [[ -f "$fichier" ]] || continue
          if [[ "$SIMULATION" == "1" ]]; then
            echo "[simulation] $(basename "$fichier") -> $cible/"
          else
            mkdir -p "$DOSSIER/$cible"
            mv -n -- "$fichier" "$DOSSIER/$cible/"
            echo "Déplacé : $(basename "$fichier") -> $cible/"
          fi
        done
      done
    }
    
    trier "Images"    "*.jpg" "*.jpeg" "*.png" "*.gif" "*.webp"
    trier "Documents" "*.pdf" "*.docx" "*.odt" "*.txt" "*.xlsx"
    trier "Archives"  "*.zip" "*.tar.gz" "*.7z"
    trier "Vidéos"    "*.mp4" "*.mkv" "*.mov"
    trier "Audio"     "*.mp3" "*.flac" "*.wav"
  3. Étape 3 : Rendre le script exécutable et le tester à blanc

    Donnez-lui le droit de s’exécuter, puis lancez-le en mode simulation (le comportement par défaut). Il affiche ce qu’il ferait, sans rien déplacer.

    Terminal
    chmod +x ~/bin/trier-telechargements.sh
    ~/bin/trier-telechargements.sh
    Capture stylisée d’un terminal sombre affichant plusieurs lignes de résultats.
    La simulation liste les déplacements prévus, sans toucher à vos fichiers.
  4. Étape 4 : Lancer pour de vrai

    Quand la liste vous convient, désactivez la simulation en passant la variable SIMULATION=0 :

    Terminal
    SIMULATION=0 ~/bin/trier-telechargements.sh
  5. Étape 5 : Planifier l’exécution chaque semaine

    Sous Linux, cron exécute des tâches à heure fixe. Ouvrez votre table de tâches avec crontab -e et ajoutez la ligne suivante : le script tournera tous les vendredis à 20 h.

    crontab
    0 20 * * 5  SIMULATION=0 $HOME/bin/trier-telechargements.sh

Pour finir

Vous venez d’écrire un vrai programme utile, avec variables, fonction, boucles et condition. Pour aller plus loin : ajoutez un dossier « Autres » pour le reste, ou archivez les fichiers de plus de six mois avec la commande find.