#!/bin/bash # Configuration generator=/home/files/scripts/generator.sh max=${MAX:-4} export cache=/dev/shm/thumbnails export root=/home/files/data # 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$ || -h "${i::-1}" ]] then continue fi # Analyse du répertoire cd "$full" # Si un index.html est déjà présent if [[ -f "index.html" && "$1" != "-f" ]] 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