Je voudrais exécuter une commande sur des fichiers d'un répertoire, 5
par 5 :
Je pensais faire ceci:
$ find . | head -n 10 | tail -n 5 | xargs -i"X" echo convert X
+append fichier01.jpg
convert ./00795.jpg +append fichier01.jpg
convert ./00954.jpg +append fichier01.jpg
convert ./01113.jpg +append fichier01.jpg
convert ./01272.jpg +append fichier01.jpg
convert ./01431.jpg +append fichier01.jpg
mais apparemment les fichiers ne sont vus que un par un par xargs.
Je voudrais avoir la ligne de commande:
$ convert ./00795.jpg [.. jusque ..] ./01431.jpg +append
fichier01.jpg
Il y a bien l'option -l5
$ find . | xargs -l5 echo "<"
< . ./00000.jpg ./00159.jpg ./00318.jpg ./00477.jpg
< ./00636.jpg ./00795.jpg ./00954.jpg ./01113.jpg ./01272.jpg
< ./01431.jpg ./01590.jpg ./01749.jpg ./01908.jpg ./02067.jpg
< ./02226.jpg ./02385.jpg ./02544.jpg ./02703.jpg ./02862.jpg
< ./03021.jpg ./03180.jpg ./03339.jpg ./03498.jpg ./03657.jpg
< ./03816.jpg
mais apparemment elle n'est pas compatible avec l'option dont j'ai
absolument besoin: -i"X" Implique -x et -l 1.
D'ailleurs dans cet exemple, pourquoi n'ai je pas 5 lignes de 5
arguments ?
Alors si vous savez comment faire, ça m'intéresse.
Antoine
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
JustMe
Antoine a écrit
Salut,
Je voudrais exécuter une commande sur des fichiers d'un répertoire, 5 par 5 : Je pensais faire ceci: $ find . | head -n 10 | tail -n 5 | xargs -i"X" echo convert X +append fichier01.jpg convert ./00795.jpg +append fichier01.jpg convert ./00954.jpg +append fichier01.jpg convert ./01113.jpg +append fichier01.jpg convert ./01272.jpg +append fichier01.jpg convert ./01431.jpg +append fichier01.jpg
mais apparemment les fichiers ne sont vus que un par un par xargs. Je voudrais avoir la ligne de commande: $ convert ./00795.jpg [.. jusque ..] ./01431.jpg +append fichier01.jpg
bah ... | xargs -i"X" echo convert X X X X X +append fichier01.jpg
mais ca marchera pas pour le dernier "lot" si moins de 5 args
Il y a bien l'option -l5 $ find . | xargs -l5 echo "<" < . ./00000.jpg ./00159.jpg ./00318.jpg ./00477.jpg < ./00636.jpg ./00795.jpg ./00954.jpg ./01113.jpg ./01272.jpg < ./01431.jpg ./01590.jpg ./01749.jpg ./01908.jpg ./02067.jpg < ./02226.jpg ./02385.jpg ./02544.jpg ./02703.jpg ./02862.jpg < ./03021.jpg ./03180.jpg ./03339.jpg ./03498.jpg ./03657.jpg < ./03816.jpg mais apparemment elle n'est pas compatible avec l'option dont j'ai absolument besoin: -i"X" Implique -x et -l 1. D'ailleurs dans cet exemple, pourquoi n'ai je pas 5 lignes de 5 arguments ?
parce que ton find renvoie aussi "." : le rep courant
Pour eviter ca : find . -type f
et il faudra que t'ajoutes aussi ! -name "fichier.*jpg" pour eviter de reprendre tes fichiers nouvellement crees
Alors si vous savez comment faire, ça m'intéresse. Antoine
Antoine a écrit
Salut,
Je voudrais exécuter une commande sur des fichiers d'un répertoire, 5
par 5 :
Je pensais faire ceci:
$ find . | head -n 10 | tail -n 5 | xargs -i"X" echo convert X
+append fichier01.jpg
convert ./00795.jpg +append fichier01.jpg
convert ./00954.jpg +append fichier01.jpg
convert ./01113.jpg +append fichier01.jpg
convert ./01272.jpg +append fichier01.jpg
convert ./01431.jpg +append fichier01.jpg
mais apparemment les fichiers ne sont vus que un par un par xargs.
Je voudrais avoir la ligne de commande:
$ convert ./00795.jpg [.. jusque ..] ./01431.jpg +append
fichier01.jpg
bah ... | xargs -i"X" echo convert X X X X X +append fichier01.jpg
mais ca marchera pas pour le dernier "lot" si moins de 5 args
Il y a bien l'option -l5
$ find . | xargs -l5 echo "<"
< . ./00000.jpg ./00159.jpg ./00318.jpg ./00477.jpg
< ./00636.jpg ./00795.jpg ./00954.jpg ./01113.jpg ./01272.jpg
< ./01431.jpg ./01590.jpg ./01749.jpg ./01908.jpg ./02067.jpg
< ./02226.jpg ./02385.jpg ./02544.jpg ./02703.jpg ./02862.jpg
< ./03021.jpg ./03180.jpg ./03339.jpg ./03498.jpg ./03657.jpg
< ./03816.jpg
mais apparemment elle n'est pas compatible avec l'option dont j'ai
absolument besoin: -i"X" Implique -x et -l 1.
D'ailleurs dans cet exemple, pourquoi n'ai je pas 5 lignes de 5
arguments ?
parce que ton find renvoie aussi "." : le rep courant
Pour eviter ca : find . -type f
et il faudra que t'ajoutes aussi ! -name "fichier.*jpg" pour eviter de
reprendre tes fichiers nouvellement crees
Alors si vous savez comment faire, ça m'intéresse.
Antoine
Je voudrais exécuter une commande sur des fichiers d'un répertoire, 5 par 5 : Je pensais faire ceci: $ find . | head -n 10 | tail -n 5 | xargs -i"X" echo convert X +append fichier01.jpg convert ./00795.jpg +append fichier01.jpg convert ./00954.jpg +append fichier01.jpg convert ./01113.jpg +append fichier01.jpg convert ./01272.jpg +append fichier01.jpg convert ./01431.jpg +append fichier01.jpg
mais apparemment les fichiers ne sont vus que un par un par xargs. Je voudrais avoir la ligne de commande: $ convert ./00795.jpg [.. jusque ..] ./01431.jpg +append fichier01.jpg
bah ... | xargs -i"X" echo convert X X X X X +append fichier01.jpg
mais ca marchera pas pour le dernier "lot" si moins de 5 args
Il y a bien l'option -l5 $ find . | xargs -l5 echo "<" < . ./00000.jpg ./00159.jpg ./00318.jpg ./00477.jpg < ./00636.jpg ./00795.jpg ./00954.jpg ./01113.jpg ./01272.jpg < ./01431.jpg ./01590.jpg ./01749.jpg ./01908.jpg ./02067.jpg < ./02226.jpg ./02385.jpg ./02544.jpg ./02703.jpg ./02862.jpg < ./03021.jpg ./03180.jpg ./03339.jpg ./03498.jpg ./03657.jpg < ./03816.jpg mais apparemment elle n'est pas compatible avec l'option dont j'ai absolument besoin: -i"X" Implique -x et -l 1. D'ailleurs dans cet exemple, pourquoi n'ai je pas 5 lignes de 5 arguments ?
parce que ton find renvoie aussi "." : le rep courant
Pour eviter ca : find . -type f
et il faudra que t'ajoutes aussi ! -name "fichier.*jpg" pour eviter de reprendre tes fichiers nouvellement crees
Alors si vous savez comment faire, ça m'intéresse. Antoine
lhabert
Antoine :
Je pensais faire ceci: $ find . | head -n 10 | tail -n 5 | xargs -i"X" echo convert X +append fichier01.jpg
Là, tu ne gardes que les lignes de 6 à 10, et tu les passes en argument à xargs.
Une solution bidouillesque :
find . -print0 | xargs -0 sh -c 'plim () { convert "$@" +append fichier01.jpg; } while test "$#" -gt 4; do plim "$1" "$2" "$3" "$4" "$5" shift 5 done if test "$#" -gt 0; then plim "$@"; fi ' ploum
Antoine :
Je pensais faire ceci:
$ find . | head -n 10 | tail -n 5 | xargs -i"X" echo convert X
+append fichier01.jpg
Là, tu ne gardes que les lignes de 6 à 10, et tu les passes en argument à
xargs.
Une solution bidouillesque :
find . -print0 | xargs -0 sh -c
'plim () { convert "$@" +append fichier01.jpg; }
while test "$#" -gt 4; do
plim "$1" "$2" "$3" "$4" "$5"
shift 5
done
if test "$#" -gt 0; then plim "$@"; fi
' ploum
Je pensais faire ceci: $ find . | head -n 10 | tail -n 5 | xargs -i"X" echo convert X +append fichier01.jpg
Là, tu ne gardes que les lignes de 6 à 10, et tu les passes en argument à xargs.
Une solution bidouillesque :
find . -print0 | xargs -0 sh -c 'plim () { convert "$@" +append fichier01.jpg; } while test "$#" -gt 4; do plim "$1" "$2" "$3" "$4" "$5" shift 5 done if test "$#" -gt 0; then plim "$@"; fi ' ploum
lhabert
Antoine :
Je pensais faire ceci: $ find . | head -n 10 | tail -n 5 | xargs -i"X" echo convert X +append fichier01.jpg
Là, tu ne gardes que les lignes de 6 à 10, et tu les passes en argument à xargs.
Une solution bidouillesque :
find . -type f -print0 | xargs -0 sh -c 'plim () { convert "$@" +append fichier01.jpg; } while test "$#" -gt 4; do plim "$1" "$2" "$3" "$4" "$5" shift 5 done if test "$#" -gt 0; then plim "$@"; fi ' ploum
Antoine :
Je pensais faire ceci:
$ find . | head -n 10 | tail -n 5 | xargs -i"X" echo convert X
+append fichier01.jpg
Là, tu ne gardes que les lignes de 6 à 10, et tu les passes en argument à
xargs.
Une solution bidouillesque :
find . -type f -print0 | xargs -0 sh -c
'plim () { convert "$@" +append fichier01.jpg; }
while test "$#" -gt 4; do
plim "$1" "$2" "$3" "$4" "$5"
shift 5
done
if test "$#" -gt 0; then plim "$@"; fi
' ploum
Je pensais faire ceci: $ find . | head -n 10 | tail -n 5 | xargs -i"X" echo convert X +append fichier01.jpg
Là, tu ne gardes que les lignes de 6 à 10, et tu les passes en argument à xargs.
Une solution bidouillesque :
find . -type f -print0 | xargs -0 sh -c 'plim () { convert "$@" +append fichier01.jpg; } while test "$#" -gt 4; do plim "$1" "$2" "$3" "$4" "$5" shift 5 done if test "$#" -gt 0; then plim "$@"; fi ' ploum
lhabert
JustMe :
bah ... | xargs -i"X" echo convert X X X X X +append fichier01.jpg
Non, ça recopie cinq fois le même argument.
JustMe :
bah ... | xargs -i"X" echo convert X X X X X +append fichier01.jpg
bah ... | xargs -i"X" echo convert X X X X X +append fichier01.jpg
Non, ça recopie cinq fois le même argument.
oups... je fus trop prompt ;-)
JustMe
Luc Habert a écrit
Antoine :
Je pensais faire ceci: $ find . | head -n 10 | tail -n 5 | xargs -i"X" echo convert X +append fichier01.jpg
Là, tu ne gardes que les lignes de 6 à 10, et tu les passes en argument à xargs.
Une solution bidouillesque :
find . -type f -print0 | xargs -0 sh -c 'plim () { convert "$@" +append fichier01.jpg; } while test "$#" -gt 4; do plim "$1" "$2" "$3" "$4" "$5" shift 5 done if test "$#" -gt 0; then plim "$@"; fi ' ploum
marchera pas : tu vas te reprendre les fichier01 dans la tronche : il faut les exclure du find
Luc Habert a écrit
Antoine :
Je pensais faire ceci:
$ find . | head -n 10 | tail -n 5 | xargs -i"X" echo convert X
+append fichier01.jpg
Là, tu ne gardes que les lignes de 6 à 10, et tu les passes en argument à
xargs.
Une solution bidouillesque :
find . -type f -print0 | xargs -0 sh -c
'plim () { convert "$@" +append fichier01.jpg; }
while test "$#" -gt 4; do
plim "$1" "$2" "$3" "$4" "$5"
shift 5
done
if test "$#" -gt 0; then plim "$@"; fi
' ploum
marchera pas : tu vas te reprendre les fichier01 dans la tronche : il
faut les exclure du find
Je pensais faire ceci: $ find . | head -n 10 | tail -n 5 | xargs -i"X" echo convert X +append fichier01.jpg
Là, tu ne gardes que les lignes de 6 à 10, et tu les passes en argument à xargs.
Une solution bidouillesque :
find . -type f -print0 | xargs -0 sh -c 'plim () { convert "$@" +append fichier01.jpg; } while test "$#" -gt 4; do plim "$1" "$2" "$3" "$4" "$5" shift 5 done if test "$#" -gt 0; then plim "$@"; fi ' ploum
marchera pas : tu vas te reprendre les fichier01 dans la tronche : il faut les exclure du find