#!/bin/bash # Configuration controller=/home/files/scripts/controller_seq.sh generator=/home/files/scripts/generator.sh export root=/home/files/data export cache=/dev/shm/thumbnails # Force la génération en supprimant les index.html # ainsi que la régénération des miniatures en les supprimant if [[ "$1" == "-f" ]] then find "${root}" -name index.html -delete rm "${cache}"/* shift fi # Mise en place de l'environnement # Si un dossier est donné en argument, on le traite, sinon on traite la racine olddir="$PWD" cd "${1:-$root}" declare -a todo # Pour les sous-répertoires for i in */ do # Si aucun sous répertoire, i vaut littéralement */ provoquant des erreurs, donc on ignore [[ ! -d "$i" ]] && continue # Récupération du chemin complet full=$(realpath "$i") # Exclusion(s) if [[ "$full" =~ ^${root}/p ]] then continue fi # Analyse du répertoire cd "$full" # Si un index.html est déjà présent if [[ -f "index.html" ]] then # Vérification de la date de modif des fichiers for file in * do # Si plus récent, ou si le dossier a été modifié récemment (ex. suppresion d'un fichier) if [[ "$file" -nt "index.html" ]] || [[ "$full" -nt "index.html" ]] then # Ajout du dossier à la liste. Dès qu'un fichier est concerné, # on peut arrêter la boucle, inutile d'ajouter 10 fois le dossier todo+=("$full") break fi done # Si pas d'index.html, on ajoute direct le dossier else todo+=("$full") fi cd - &>/dev/null done # S'il y a au moins un sous-dossier, on relance le script dans chaque # sous-dossier pour les traiter d'abord [[ "${#todo[@]}" -gt 0 ]] && for i in "${todo[@]}"; do $controller "$i"; done # Une fois tous les sous-dossiers traités, on génère l'index.html du dossier courant $generator # Et on retourne au dossier d'origine cd "$olddir"