# [script bash]Vérifier intégrité bibliothèque musicale

## gglaboussole

Bonjour à tous,

Je me suis aperçu que quelques fichiers flac de ma bibliothèque musicale s'étaient corrompus (au delà de ce constat, je n'ai aucune idée de ce qui a pu causer cette corruption...disque et système de fichier sain... ->si quelqu'un à une idée sur ce qui peux causer cela je suis preneur)

Plutôt que de tester un a un mes flac, je voudrais lancer un script qui va chercher récursivement la totalité de mes flac et y appliquer flac -t.

L'algo est très simple :

Tant que fichier flac trouvé faire tester flac

 Si flac corrompu alors écrire nom dans fichier log...

Pour trouver récursivement tous mes flac, a priori aucun souci :

```

find '/mnt/disque2/backup-flac/' -name '*.flac' -type f 

```

Je peux rediriger la sortie standard vers un fichier et constater qu'ils sont tous listés

Les problèmes arrivent dans la seconde partie de mon script, à savoir le traitement que je peux appliquer à mes flacs.

J'ai essayé d'enchainer avec -exec ou  -execdir avec man find à l'appui mais à chaque fois j'ai une erreur "paramètre manquant"

En gros je faisais un truc de ce style (sans if, et sans même flac -t, juste pour débugger le truc et voir si je pouvais faire un "echo pouet" dans un fichier tant qu'un  flac est rencontré :

```

find '/mnt/disque2/backup-flac/' -name '*.flac' -type f  -execdir /bin/echo 'pouet' >>testouille.txt 

```

( j'ai essayé avec les {}, le ; , rien n'y fait toujours paramètre manquants...)

N'arrivant pas à passer cette étape pourtant simple (oui je pense que je vais en faire rire plus d'un...  :Wink:  ) je m'en remets à vos conseils

Un fois sur la bonne voie on peut également imaginer passer le path de la bibliothèque musicale en argument, et appliquer un utilitaire de test différent en fonction de l'extension du fichier musical rencontré (mp3, ogg,...) et faire ensemble un script général de vérification de bibliothèque musicale pouvant profiter à tous ?

Merci par avance de votre aide

----------

## geekounet

Faut pas oublier le ; à la fin du -exec de find.  :Smile:  (sans oublier de l'escape)

```
find '/mnt/disque2/backup-flac/' -name '*.flac' -type f -exec flac -t '{}' \;
```

----------

## gglaboussole

C'est vrai ça va mieux comme ça, merci   :Wink: 

Je continue sur cette base et je vous tiens au courant...

----------

## gglaboussole

Voilà une première ébauche qui ne marche pour l'instant que pour vérifier l'intégrité des flac, je vais tenter de l'améliorer dès que j'ai le temps pour tester d'autres formats musicaux:

```

#! /bin/sh

find $1 -name '*.flac' -type f -not -exec flac -t --totally-silent '{}'  \; -and -print > corrompus.txt

echo 'fait !'

```

Pour l'invoquer : ./monscript /path_de_la_bibliothèque_musicale

Les fichiers corrompus sont indiqués dans le fichier corrompus.txt qui se situera dans le répertoire ou vous avez lancé le script.

----------

