Le script que je vous propose ici sert à comparer deux arborescences pour repérer par rapport à celle de référence les répertoires/fichiers créés ainsi que les fichiers modifiés.
Je m’en sers essentiellement dans mon projet ./play.it pour repérer les fichiers modifiés/créés lors de sauvegardes ou de modification des options pour des jeux dont je n’ai pas accès au code source.
Voici la bête :
[code]#!/bin/sh -e
compare deux arborescences et retourne les différences
$1 = arborescence modifiée
$2 = arborecence de référence
dir_target="$(realpath “$1”)“
dir_source=”$(realpath “$2”)"
if [ ! -d “${dir_target}” ]; then
printf 'Erreur !\n’
printf ‘%s: répertoire introuvable.\n’ "${dir_target}"
fi
if [ ! -d “${dir_source}” ]; then
printf 'Erreur !\n’
printf ‘%s: répertoire introuvable.\n’ "${dir_source}"
fi
cd “${dir_target}”
find . -type d | while read dir; do
if ! [ -e “${dir_source}/$dir” ]; then
printf ‘nouveau répertoire : %s\n’ "${dir}"
fi
done
find . -type f | while read file; do
if ! [ -e “${dir_source}/$file” ]; then
printf ‘nouveau fichier : %s\n’ "${file}"
fi
done
find . -type f | while read file; do
if [ -n “$(diff -q “${file}” “${dir_source}/${file}” 2>/dev/null)” ]; then
printf ‘fichier modifié : %s\n’ "${file}"
fi
done
exit 0[/code]
Et un exemple d’utilisation :
$ find-diff ~/.local/share/games/planescape-torment /usr/local/share/games/planescape-torment
nouveau répertoire : ./save
fichier modifié : ./torment.log
fichier modifié : ./torment.err
Vos commentaires et suggestions sont les bienvenus, et si vous réutilisez ce script ça me ferait plaisir de savoir à quoi il peut vous servir