Modifications pour le document Classement
Modifié par john le 2026/09/20 20:22
Résumé
-
Propriétés de la Page (1 modifications, 0 ajouts, 0 suppressions)
Détails
- Propriétés de la Page
-
- Contenu
-
... ... @@ -1,40 +1,25 @@ 1 += Script d'organisation automatique des fichiers = 2 + 1 1 {{toc/}} 2 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.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. 4 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 7 == Script Bash == 8 8 9 9 {{code language="bash"}} 10 10 #!/bin/bash 11 -set -euo pipefail 12 - 13 -DIR="${1:-$PWD}" 14 -SCRIPT="$(cd "$(dirname "$0")" && pwd)/$(basename "$0")" 15 - 11 +DIR="${1:-$(pwd)}" 16 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 - 13 +find "$DIR" -maxdepth 1 -type f | while read -r file; do 22 22 ext=$(basename "$file" | awk -F. '{if (NF>1) print $NF; else print "autres"}' | tr '[:upper:]' '[:lower:]') 23 23 date_path=$(date -r "$file" "+%Y/%m") 24 24 target="$DIR/$ext/$date_path" 25 - 26 26 mkdir -p "$target" 27 - mv -n"$file" "$target/"# -n : ne jamais écraser un fichier existant28 - echo "→ $ (basename "$file")→ $ext/$date_path/"18 + mv "$file" "$target/" 19 + echo "→ $file → $target/" 29 29 done 30 30 {{/code}} 31 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 38 == Exemple de résultat == 39 39 40 40 {{code language="text"}} ... ... @@ -46,24 +46,18 @@ 46 46 47 47 == Exécution == 48 48 49 - {{code language="bash"}}50 -./organise.sh 34 +Tu peux exécuter le script comme ceci : 35 +{{code language="bash"}}./organise.sh 51 51 # ou 52 -./organise.sh /chemin/vers/dossier 53 -{{/code}} 37 +./organise.sh /chemin/vers/dossier{{/code}} 54 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 59 == Personnalisation == 60 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]] 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]] 65 65 66 66 == Liens internes == 67 67 68 -* [[Retour aux scripts perso>>doc:Wiki Batcave John.TutosLinux.ScriptsPerso.WebHome]] 47 +* [[Retour aux scripts personnels>>doc:Wiki Batcave John.TutosLinux.ScriptsPerso.WebHome]] 69 69 * [[Retour à l’accueil>>doc:Wiki Batcave John.WebHome]]