function f_image-fusion {=20
=20
ffmpeg -i $0 image%d.jpg=20
}=20
{=20
find ./ -iname \*.mp4=20
echo "EOF"=20
} | {=20
while true; do=20
read -r i=20
test "$i" =3D "EOF" && break=20
f_image-fusion "$i"=20
done=20
}=20
Je fais cela sur d=C3=A9s r=C3=A9pertoire, et j=E2=80=99aurai aimer redirig=
er la sortie de la fonction f_image-fusion sur un autre r=C3=A9pertoire qu=
e le courant, sans avoir =C3=A0 imbriquer une autre boucle est-ce que c=E2=
=80=99est possible ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Marc Chantreux
salut, * read renvoie faux quand il ne peut plus lire donc { find ./ -iname *.mp4 echo "EOF" } | { while true; do read -r i test "$i" = "EOF" && break f_image-fusion "$i" } s'écrit plus traditionelement { find ./ -iname *.mp4 echo "EOF" } | { while IFS= read -r i; do f_image-fusion "$i" done } mais les boucles while sur des read en shell c'est pas très efficace: l'outils posix pour faire ce que tu veux faire est xargs find ./ -iname *.mp4 -print0 |xargs -IX ffmpeg -i X image%d.jpg
Je fais cela sur dés répertoire, et j’aurai aimer red iriger la sortie de la fonction f_image-fusion sur un autre réperto ire que le courant, sans avoir à imbriquer une autre boucle est-ce q ue c’est possible ?
ce que je comprend c'est que tu veux que les images soient géné rées dans un autre répertoire que le répertoire courant. pour cela il te faut juste modifier le template du nom de fichier find ./ -iname *.mp4 -print0 | xargs -0 -IX ffmpeg -i X /tmp/image%d.jpg si ton répertoire de destination est dépendant du répertoi re dans lequel se trouve le mp4, il faut produire la liste des arguments de ffmpeg avec find et les passer à xargs. si j'ai compris correctement ton problème, ton script final est find tmp/born/ -type f -printf '%f %h/image%%d.jpg ' | xargs -0 -n2 ffmpeg -i a+ marc
salut,
* read renvoie faux quand il ne peut plus lire donc
{ find ./ -iname *.mp4
echo "EOF"
} | {
while true; do
read -r i
test "$i" = "EOF" && break
f_image-fusion "$i"
}
s'écrit plus traditionelement
{ find ./ -iname *.mp4
echo "EOF"
} | {
while IFS= read -r i; do
f_image-fusion "$i"
done
}
mais les boucles while sur des read en shell c'est pas très
efficace: l'outils posix pour faire ce que tu veux faire est xargs
Je fais cela sur dés répertoire, et j’aurai aimer red iriger la sortie de la fonction f_image-fusion sur un autre réperto ire que le courant, sans avoir à imbriquer une autre boucle est-ce q ue c’est possible ?
ce que je comprend c'est que tu veux que les images soient géné rées dans
un autre répertoire que le répertoire courant. pour cela il te faut
juste modifier le template du nom de fichier
si ton répertoire de destination est dépendant du répertoi re dans lequel
se trouve le mp4, il faut produire la liste des arguments de ffmpeg
avec find et les passer à xargs.
si j'ai compris correctement ton problème, ton script final est
salut, * read renvoie faux quand il ne peut plus lire donc { find ./ -iname *.mp4 echo "EOF" } | { while true; do read -r i test "$i" = "EOF" && break f_image-fusion "$i" } s'écrit plus traditionelement { find ./ -iname *.mp4 echo "EOF" } | { while IFS= read -r i; do f_image-fusion "$i" done } mais les boucles while sur des read en shell c'est pas très efficace: l'outils posix pour faire ce que tu veux faire est xargs find ./ -iname *.mp4 -print0 |xargs -IX ffmpeg -i X image%d.jpg
Je fais cela sur dés répertoire, et j’aurai aimer red iriger la sortie de la fonction f_image-fusion sur un autre réperto ire que le courant, sans avoir à imbriquer une autre boucle est-ce q ue c’est possible ?
ce que je comprend c'est que tu veux que les images soient géné rées dans un autre répertoire que le répertoire courant. pour cela il te faut juste modifier le template du nom de fichier find ./ -iname *.mp4 -print0 | xargs -0 -IX ffmpeg -i X /tmp/image%d.jpg si ton répertoire de destination est dépendant du répertoi re dans lequel se trouve le mp4, il faut produire la liste des arguments de ffmpeg avec find et les passer à xargs. si j'ai compris correctement ton problème, ton script final est find tmp/born/ -type f -printf '%f %h/image%%d.jpg ' | xargs -0 -n2 ffmpeg -i a+ marc