0 Votes

Code source wiki de Classement

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

Afficher les derniers auteurs
1 {{toc/}}
2
3 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.
4
5 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.
6
7 == Script Bash ==
8
9 {{code language="bash"}}
10 #!/bin/bash
11 set -euo pipefail
12
13 DIR="${1:-$PWD}"
14 SCRIPT="$(cd "$(dirname "$0")" && pwd)/$(basename "$0")"
15
16 echo "Organisation des fichiers dans : $DIR"
17
18 find "$DIR" -maxdepth 1 -type f -print0 | while IFS= read -r -d '' file; do
19 # Ne pas se déplacer soi-même
20 [ "$file" = "$SCRIPT" ] && continue
21
22 ext=$(basename "$file" | awk -F. '{if (NF>1) print $NF; else print "autres"}' | tr '[:upper:]' '[:lower:]')
23 date_path=$(date -r "$file" "+%Y/%m")
24 target="$DIR/$ext/$date_path"
25
26 mkdir -p "$target"
27 mv -n "$file" "$target/" # -n : ne jamais écraser un fichier existant
28 echo "→ $(basename "$file") → $ext/$date_path/"
29 done
30 {{/code}}
31
32 |=Élément|=Rôle
33 |##set -euo pipefail##|Arrêt à la première erreur
34 |##-print0## et ##read -d ''##|Gère les noms contenant espaces, apostrophes ou retours à la ligne
35 |##mv -n##|N'écrase jamais un fichier déjà présent dans le dossier cible
36 |Test sur ##$SCRIPT##|Empêche le script de se ranger lui-même
37
38 == Exemple de résultat ==
39
40 {{code language="text"}}
41 Téléchargements/
42 ├── pdf/2024/12/rapport-final.pdf
43 ├── png/2025/05/capture.png
44 ├── autres/2025/01/fichier_sans_extension
45 {{/code}}
46
47 == Exécution ==
48
49 {{code language="bash"}}
50 ./organise.sh
51 # ou
52 ./organise.sh /chemin/vers/dossier
53 {{/code}}
54
55 {{warning}}
56 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.
57 {{/warning}}
58
59 == Personnalisation ==
60
61 * Ignorer les petits fichiers : ##find "$DIR" -maxdepth 1 -type f -size +10k##
62 * Ignorer les fichiers récents : ajouter ##-mtime +7##
63 * Trier par année seulement : ##date -r "$file" "+%Y"##
64 * Intégrer à Nautilus : voir [[Nautilus et Zenity>>doc:Wiki Batcave John.TutosLinux.ScriptsPerso.NautilusZenity.WebHome]]
65
66 == Liens internes ==
67
68 * [[Retour aux scripts perso>>doc:Wiki Batcave John.TutosLinux.ScriptsPerso.WebHome]]
69 * [[Retour à l’accueil>>doc:Wiki Batcave John.WebHome]]