0 Votes

Classement

Modifié par john le 2026/09/20 20:22

Ce script organise automatiquement les fichiers d’un répertoire en les triant par type (extension) et par date de modification (année/mois). Idéal pour ranger un dossier de téléchargements ou trier des fichiers archivés.

Fonctionnement : le script détecte l'extension de chaque fichier, extrait sa date de modification, crée le dossier correspondant (par exemple pdf/2024/12) et y déplace le fichier.

Script Bash

#!/bin/bash
set -euo pipefail

DIR="${1:-$PWD}"
SCRIPT="$(cd "$(dirname "$0")" && pwd)/$(basename "$0")"

echo "Organisation des fichiers dans : $DIR"

find "$DIR" -maxdepth 1 -type f -print0 | while IFS= read -r -d '' file; do
 # Ne pas se déplacer soi-même
 [ "$file" = "$SCRIPT" ] && continue

 ext=$(basename "$file" | awk -F. '{if (NF>1) print $NF; else print "autres"}' | tr '[:upper:]' '[:lower:]')
 date_path=$(date -r "$file" "+%Y/%m")
 target="$DIR/$ext/$date_path"

  mkdir -p "$target"
  mv -n "$file" "$target/"       # -n : ne jamais écraser un fichier existant
 echo "→ $(basename "$file") → $ext/$date_path/"
done
ÉlémentRôle
set -euo pipefailArrêt à la première erreur
-print0 et read -d ''Gère les noms contenant espaces, apostrophes ou retours à la ligne
mv -nN'écrase jamais un fichier déjà présent dans le dossier cible
Test sur $SCRIPTEmpêche le script de se ranger lui-même

Exemple de résultat

Téléchargements/
├── pdf/2024/12/rapport-final.pdf
├── png/2025/05/capture.png
├── autres/2025/01/fichier_sans_extension

Exécution

./organise.sh
# ou
./organise.sh /chemin/vers/dossier
Warning

Essayer d'abord à blanc, en remplaçant mv -n par echo mv : le script déplace des fichiers sans confirmation, et une erreur de chemin range tout un dossier au mauvais endroit.

Personnalisation

  • Ignorer les petits fichiers : find "$DIR" -maxdepth 1 -type f -size +10k
  • Ignorer les fichiers récents : ajouter -mtime +7
  • Trier par année seulement : date -r "$file" "+%Y"
  • Intégrer à Nautilus : voir Nautilus et Zenity

Liens internes