Dans l'exemple suivant, je vais rechercher tous les fichiers dans un dossier, exécuter la commande xxh64sum et afficher un tableau de 3 colonnes contenant le nom court du fichier, la valeur du xxh64sum et enfin, le nom complet du fichier (chemin compris).
Le résultat final sera affiché à l'écran et sauvegardé dans un fichier.
$ sudo find /var/log/nginx/ -type f -printf '%p %f\n' | while read -r x y; do xxh64=$(sudo xxh64sum "$x") ; printf "%-45s %-s\n" "$y" "$xxh64"; done | sort | tee /tmpfs/result
En détail:
On recherche tous les fichiers du dossier et on affiche le nom complet du fichier (chemin compris %p) et le nom court (%f)
find /var/log/nginx/ -type f -printf '%p %f\n'
Tant qu'il y a des enregistrements retournés par la commande précédente (boucle while), on lit chaque ligne en affectant chaque élément (le nom complet du fichier et le nom court) à la variable x et y (read -r x y).
Lien vers l'article read
Le calcul de la somme de contrôle xxh64 est exécuté sur le nom complet du fichier (xxh64sum $x).
Le résultat est affiché grâce à la commande printf.
On affiche en premier le nom court du fichier puis le résultat du hash qui contient le hash et le nom complet du fichier.
while read -r x y; do xxh64=$(sudo xxh64sum "$x") ; printf "%-45s %-s\n" "$y" "$xxh64"; done
Le résultat est affiché à l'écran et sauvegardé dans un fichier (et trié).
sort | tee /tmpfs/result
Le résultat final:
access.log-20250204.gz 54c1315ad46e078e /var/log/nginx/access.log-20250204.gz
access.log-20250205.gz 1020da7a66e84c2e /var/log/nginx/access.log-20250205.gz
access.log-20250206.gz 3ff0cf42b19bbef8 /var/log/nginx/access.log-20250206.gz
access.log-20250207.gz e99c510ae86f4661 /var/log/nginx/access.log-20250207.gz
access.log-20250208.gz f7868465f7071e87 /var/log/nginx/access.log-20250208.gz
access.log-20250209.gz 15b776894f620c85 /var/log/nginx/access.log-20250209.gz
access.log-20250210.gz 85b3722e1e1c198d /var/log/nginx/access.log-20250210.gz
access.log-20250211.gz b42bb2e5afa75766 /var/log/nginx/access.log-20250211.gz
access.log-20250212.gz 4317f17985526602 /var/log/nginx/access.log-20250212.gz
access.log-20250213.gz 739dc6d9afc15060 /var/log/nginx/access.log-20250213.gz
access.log 90ecd0288ae898a0 /var/log/nginx/access.log
error.log-20250130.gz cdbbcb3a8cbc152b /var/log/nginx/error.log-20250130.gz
error.log-20250131.gz aaec7df137471019 /var/log/nginx/error.log-20250131.gz
error.log-20250201.gz 146b1bb4ee853137 /var/log/nginx/error.log-20250201.gz
error.log-20250204.gz d6e701381046fedb /var/log/nginx/error.log-20250204.gz
error.log-20250206.gz 74672169e3144efa /var/log/nginx/error.log-20250206.gz
error.log-20250207.gz 92ebe0bf6bc5d022 /var/log/nginx/error.log-20250207.gz
error.log-20250208.gz 97f540ddcb0086fe /var/log/nginx/error.log-20250208.gz
error.log-20250211.gz 7f405c59697f053e /var/log/nginx/error.log-20250211.gz
error.log-20250212.gz b8ae94168abbe021 /var/log/nginx/error.log-20250212.gz
error.log-20250213.gz cd37e963401b42fe /var/log/nginx/error.log-20250213.gz
error.log e7c658673b7028ac /var/log/nginx/error.log
http_json_echo.log-20240927.gz d30a3b619014ba2d /var/log/nginx/http_json_echo.log-20240927.gz
http_json_echo.log-20241029.gz 02e2db0f9bf951a1 /var/log/nginx/http_json_echo.log-20241029.gz
http_json_echo.log ef46db3751d8e999 /var/log/nginx/http_json_echo.log