Modifications pour le document Classement
Modifié par john le 2026/09/20 20:22
Résumé
-
Propriétés de la Page (2 modifications, 0 ajouts, 0 suppressions)
Détails
- Propriétés de la Page
-
- Titre
-
... ... @@ -1,1 +1,1 @@ 1 - ScriptsPerso/Classement1 +Classement - Contenu
-
... ... @@ -1,25 +3,40 @@ 1 -= Script d'organisation automatique des fichiers = 2 - 3 3 {{toc/}} 4 4 5 -Ce script permet d’organiserautomatiquement 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 fichiersde projetsarchivé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 → $ta rget/"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,18 +31,24 @@ 31 31 32 32 == Exécution == 33 33 34 - Tu peux exécuterlescript comme ceci :35 - {{code language="bash"}}./organise.sh49 +{{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 perso nnels>>doc:Wiki Batcave John.TutosLinux.ScriptsPerso.WebHome]]68 +* [[Retour aux scripts perso>>doc:Wiki Batcave John.TutosLinux.ScriptsPerso.WebHome]] 48 48 * [[Retour à l’accueil>>doc:Wiki Batcave John.WebHome]]