# \[BASH\] exécuter script sur les fichiers d'un répertoire

**URL:** <https://www.debian-fr.org/t/bash-executer-script-sur-les-fichiers-dun-repertoire/67605>\
**Category:** Programmation\
**Created:** [Février 21, 2016, 10:05 UTC](https://www.debian-fr.org/t/bash-executer-script-sur-les-fichiers-dun-repertoire/67605 "2016-02-21T22:05:43Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![piratebab](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/p/58f4c7/32.png) [@piratebab](https://www.debian-fr.org/u/piratebab)\
**Post date:** [Février 21, 2016, 10:05 UTC](https://www.debian-fr.org/t/bash-executer-script-sur-les-fichiers-dun-repertoire/67605/1 "2016-02-21T22:05:43Z")

</div>

Bonsoir,  
je veux exécuter un script de façon récursive sur les fichiers d’un répertoire, mais je suis nul en bash. Le script a exécuter s’appelle encodeur-web, et prends en paramètre le nom d’un fichier (qui peut contenir des espaces.

`#!/bin/bash
for video in "/home/mon rep"/*
 do
   ./encodeur-web "$video"
done
`  
Mais ça ne fonctionne pas.

[quote]Invalid data found when processing input  
[/quote]  
comment passer correctement le nom du fichier à mon script ?

---

<div class="post-metadata">

**Author:** ![yap22](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/y/9e8a1a/32.png) [@yap22](https://www.debian-fr.org/u/yap22)\
**Post date:** [Février 21, 2016, 10:05 UTC](https://www.debian-fr.org/t/bash-executer-script-sur-les-fichiers-dun-repertoire/67605/2 "2016-02-21T22:05:43Z")

</div>

Bonjour,

As tu essayé avec la commande find .

Exemple : appliquer le script [taille.sh](http://taille.sh) aux fichiers dont le nom contient toto :

```auto
find /mon/dossier -name '*toto*' -exec $HOME/taille.sh {} \;
```

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Février 21, 2016, 10:05 UTC](https://www.debian-fr.org/t/bash-executer-script-sur-les-fichiers-dun-repertoire/67605/3 "2016-02-21T22:05:43Z")

</div>

[quote]…Invalid data found when processing input…[/quote]Ce message provient sans doute de [mono]./encodeur-web[/mono] qui a trouvé un fichier qui ne lui plaît pas.

Donc, l’erreur est plutôt à chercher dans un ou plusieurs des fichiers à traiter,  
ou/et dans le programme (ou script) d’encodage nommé [mono]./encodeur-web[/mono]

=======  
On pourrais faire “dire” au script de quel(s) fichier(s) il s’agit :

[code]#!/bin/bash

# ligne suivante à dé-commenter si besoin

# rm fichiersNonEncodes.txt

for video in “/home/mon rep”/\*  
do  
./encodeur-web “$video” ||   
echo “$video” \>\> fichiersNonEncodes.txt  
done[/code]Le fichier [mono]fichiersNonEncodes.txt[/mono] sera créé.

Éventuellement, pour éviter de rajouter à chaque fois une nouvelle liste dans le fichier,  
on pourrait supprimer le fichier fichiersNonEncodes.txt au début du script.

========  
Ensuite, s’il est question d’appliquer un traitement spécial aux fichiers de la liste :

[code]#!/bin/bash

IFS=$’\n’  
for video in $(cat fichiersNonEncodes.txt)  
do  
scriptTraitementSpecial "$video"  
done[/code]

---

<div class="post-metadata">

**Author:** ![piratebab](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/p/58f4c7/32.png) [@piratebab](https://www.debian-fr.org/u/piratebab)\
**Post date:** [Février 21, 2016, 10:05 UTC](https://www.debian-fr.org/t/bash-executer-script-sur-les-fichiers-dun-repertoire/67605/4 "2016-02-21T22:05:43Z")

</div>

encodeur-web fonctionne très bien. C’est le fichier qui lui est passé en parametre qui n’était pas correct.  
J’ai repris le script, et maintenant ça fonctionne. Il devait y avoir une faute de frappe quelque part.
