Voici deux exemples plus complets :
-
Créer un fichier md5 dans chaque répertoire qui n'en a pas déjà un, avec des chemins absolus :
find "$PWD" -type d | sort | while read dir; do [ ! -f "${dir}"/@md5Sum.md5 ] && echo "Processing " "${dir}" || echo "Skipped " "${dir}" " @md5Sum.md5 already present" ; [ ! -f "${dir}"/@md5Sum.md5 ] && md5sum "${dir}"/* > "${dir}"/@md5Sum.md5 ; chmod a=r "${dir}"/@md5Sum.md5;done
-
Créer un fichier md5 dans chaque dossier qui n'en a pas déjà un : pas de chemin, seulement des noms de fichiers :
find "$PWD" -type d | sort | while read dir; do cd "${dir}"; [ ! -f @md5Sum.md5 ] && echo "Processing " "${dir}" || echo "Skipped " "${dir}" " @md5Sum.md5 allready present" ; [ ! -f @md5Sum.md5 ] && md5sum * > @md5Sum.md5 ; chmod a=r "${dir}"/@md5Sum.md5 ;done
Ce qui diffère entre 1 et 2 est la façon dont les fichiers sont présentés dans le fichier md5 résultant.
Les commandes font ce qui suit :
- Construit une liste de noms de répertoires pour le dossier courant. (Arbre)
- Trier la liste des dossiers.
- Vérifier dans chaque répertoire si le fichier @md5sum.md5 existe. Sortie Sautée s'il existe, sortie Traitement s'il n'existe pas.
- Si le fichier @md5Sum.md5 n'existe pas, md5Sum en générera un avec les sommes de contrôle de tous les fichiers du dossier. 5) Configurez le fichier @md5Sum.md5 généré en lecture seule.
La sortie de ce script entier peut être redirigée vers un fichier (.....;done > test.log) ou être acheminée vers un autre programme (comme grep). La sortie vous indiquera seulement quels répertoires ont été sautés et lesquels ont été traités.
Après une exécution réussie, vous obtiendrez un fichier @md5Sum.md5 dans chaque sous-répertoire de votre répertoire courant.
J'ai nommé le fichier @md5Sum.md5 pour qu'il soit listé en haut du répertoire dans un partage samba.
La vérification de tous les fichiers @md5Sum.md5 peut être effectuée par les commandes suivantes :
find "$PWD" -name @md5Sum.md5 | sort | while read file; do cd "${file%/*}"; md5sum -c @md5Sum.md5; done > checklog.txt
Ensuite, vous pouvez parcourir le checklog.txt en utilisant grep -v OK pour obtenir une liste de tous les fichiers qui diffèrent.
Pour régénérer un @md5Sum.md5 dans un répertoire spécifique, lorsque vous avez modifié ou ajouté des fichiers par exemple, supprimez le fichier @md5Sum.md5 ou renommez-le et exécutez à nouveau la commande generate.