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 ?
[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]
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.