#!/bin/bash # Configuration generator=/home/files/generator.sh max=4 export cache=/home/files/data/.thumbnails export root=/home/files/data # 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}"/* fi # Mise en place de l'environnement cd "$root" shopt -s globstar declare -a todo # Pour tous les répertoires et sous-répertoires for i in **/ do # 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 # Retour au dossier de départ cd - &>/dev/null done # S'il y a au moins un dossier, on lance le générateur sur chaque, avec $max process en parallèle [[ "${#todo[@]}" -gt 0 ]] && for i in "${todo[@]}"; do echo $i; done | sort -r | xargs -d'\n' -L 1 -P$max $generator # Et on génère l'index.html dossier racine $generator shopt -u globstar