0 Votes

Modifications pour le document Classement

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

Depuis la version 1.1
modifié par john
sur 2025/05/24 23:47
Commentaire de modification : Imported from XAR
À la version 3.1
modifié par john
sur 2026/09/20 20:22
Commentaire de modification : Il n'y a aucun commentaire pour cette version

Résumé

Détails

Propriétés de la Page
Titre
... ... @@ -1,1 +1,1 @@
1 -ScriptsPerso/Classement
1 +Classement
Contenu
... ... @@ -1,25 +3,40 @@
1 -= Script d'organisation automatique des fichiers =
2 -
3 3  {{toc/}}
4 4  
5 -Ce script permet d’organiser automatiquement les fichiers d’un répertoire en les triant par **type** (extension) et par **date de modification** (année/mois). C’est idéal pour ranger un dossier de téléchargements ou trier des fichiers de projets archivés. Le fonctionnement est simple : 1) Le script détecte le type de chaque fichier (extension) ; 2) Il extrait la date de modification (année/mois) ; 3) Il crée les dossiers correspondants (ex : `pdf/2024/12`) et y déplace les fichiers.
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.
6 6  
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 7  == Script Bash ==
8 8  
9 9  {{code language="bash"}}
10 10  #!/bin/bash
11 -DIR="${1:-$(pwd)}"
11 +set -euo pipefail
12 +
13 +DIR="${1:-$PWD}"
14 +SCRIPT="$(cd "$(dirname "$0")" && pwd)/$(basename "$0")"
15 +
12 12  echo "Organisation des fichiers dans : $DIR"
13 -find "$DIR" -maxdepth 1 -type f | while read -r file; do
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 +
14 14   ext=$(basename "$file" | awk -F. '{if (NF>1) print $NF; else print "autres"}' | tr '[:upper:]' '[:lower:]')
15 15   date_path=$(date -r "$file" "+%Y/%m")
16 16   target="$DIR/$ext/$date_path"
25 +
17 17   mkdir -p "$target"
18 - mv "$file" "$target/"
19 - echo "→ $file → $target/"
27 + mv -n "$file" "$target/" # -n : ne jamais écraser un fichier existant
28 + echo "→ $(basename "$file") → $ext/$date_path/"
20 20  done
21 21  {{/code}}
22 22  
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 +
23 23  == Exemple de résultat ==
24 24  
25 25  {{code language="text"}}
... ... @@ -31,17 +31,24 @@
31 31  
32 32  == Exécution ==
33 33  
34 -Tu peux exécuter le script comme ceci :
35 -{{code language="bash"}}./organise.sh
49 +{{code language="bash"}}
50 +./organise.sh
36 36  # ou
37 -./organise.sh /chemin/vers/dossier{{/code}}
52 +./organise.sh /chemin/vers/dossier
53 +{{/code}}
38 38  
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 +
39 39  == Personnalisation ==
40 40  
41 -- Pour ignorer les petits fichiers : `find "$DIR" -type f -size +10k`
42 -- Pour tester à blanc : remplace `mv` par `echo mv`
43 -- Pour intégrer à Nautilus : voir [[Zenity>>doc:Wiki Batcave John.TutosLinux.ScriptsPerso.ScriptsPerso/NautilusZenity.WebHome]]
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]]
44 44  
45 45  == Liens internes ==
46 46  
47 -* [[Retour aux scripts personnels>>doc:Wiki Batcave John.TutosLinux.ScriptsPerso.WebHome]]
68 +* [[Retour aux scripts perso>>doc:Wiki Batcave John.TutosLinux.ScriptsPerso.WebHome]]
69 +* [[Retour à l’accueil>>doc:Wiki Batcave John.WebHome]]