J'aurai besoin d'un peu d'aide concernant la commande find
Que puis mettre comme action derriere -exec ?
je cherche a controler la presence d'un fichier dans un repertoire
je fais donc :
find . $path -maxdepth 1 -name $f
comme je veut exploiter le resultat, j'ai tester un echo ou mv
jusque la OK
Mais quand j'essaye autre chose, du style donner une valeur a une variable,
ca marche plus
Est-il possible de faire if [ find ...] then ... ??
Est-il possible de faire if [ find ...] then ... ??
En fait ou est l'interet ? Find est censé retourner une liste de fichiers , eventuellement un fichier si on est sur .
if [...] est censé prendre quelquechose de "booléen" .
ce que vous pouvez faire c'est recuperer la sortie d'erreur de "find" et en faire quelquechose ...
Mais c'est mon avis , et je ne suis pas pro du shell mais j'en ai des notions ...
Merci
--
http://mrakotom.free.fr
ghjghj
Salut,
Justement ce n'est pas la sortie d'erreur que je veux recuperer, mais la presence du fichier c'est pourquoi je pensait au IF, genre : si fichier present dans le rep alors , le renommer et verifier que le nouveau nom n'est pas present dans ce repertoire et mettre le tout dans une boucle de controle, mais je n'y arrive pas Soit c'est pas possible, soit ma syntaxe est mauvaise
Help me please :)
Grand's
"Rakotomandimby" a écrit dans le message news: bstt49$ovs$
Grand's wrote:
Salut,
Bonjour
Est-il possible de faire if [ find ...] then ... ??
En fait ou est l'interet ? Find est censé retourner une liste de fichiers , eventuellement un fichier si on est sur .
if [...] est censé prendre quelquechose de "booléen" .
ce que vous pouvez faire c'est recuperer la sortie d'erreur de "find" et en
faire quelquechose ...
Mais c'est mon avis , et je ne suis pas pro du shell mais j'en ai des notions ...
Merci
--
http://mrakotom.free.fr
Salut,
Justement ce n'est pas la sortie d'erreur que je veux recuperer, mais la
presence du fichier
c'est pourquoi je pensait au IF, genre :
si fichier present dans le rep alors , le renommer et verifier que le
nouveau nom n'est pas present dans ce repertoire
et mettre le tout dans une boucle de controle, mais je n'y arrive pas
Soit c'est pas possible, soit ma syntaxe est mauvaise
Help me please :)
Grand's
"Rakotomandimby" <mrakotom@free.fr> a écrit dans le message news:
bstt49$ovs$1@news-reader4.wanadoo.fr...
Grand's wrote:
Salut,
Bonjour
Est-il possible de faire if [ find ...] then ... ??
En fait ou est l'interet ?
Find est censé retourner une liste de fichiers , eventuellement un fichier
si on est sur .
if [...] est censé prendre quelquechose de "booléen" .
ce que vous pouvez faire c'est recuperer la sortie d'erreur de "find" et
en
faire quelquechose ...
Mais c'est mon avis , et je ne suis pas pro du shell mais j'en ai des
notions ...
Justement ce n'est pas la sortie d'erreur que je veux recuperer, mais la presence du fichier c'est pourquoi je pensait au IF, genre : si fichier present dans le rep alors , le renommer et verifier que le nouveau nom n'est pas present dans ce repertoire et mettre le tout dans une boucle de controle, mais je n'y arrive pas Soit c'est pas possible, soit ma syntaxe est mauvaise
Help me please :)
Grand's
"Rakotomandimby" a écrit dans le message news: bstt49$ovs$
Grand's wrote:
Salut,
Bonjour
Est-il possible de faire if [ find ...] then ... ??
En fait ou est l'interet ? Find est censé retourner une liste de fichiers , eventuellement un fichier si on est sur .
if [...] est censé prendre quelquechose de "booléen" .
ce que vous pouvez faire c'est recuperer la sortie d'erreur de "find" et en
faire quelquechose ...
Mais c'est mon avis , et je ne suis pas pro du shell mais j'en ai des notions ...
Merci
--
http://mrakotom.free.fr
Philippe Delsol
ghjghj a écrit dans le message <3ff27e7c$...
Salut,
Justement ce n'est pas la sortie d'erreur que je veux recuperer, mais la presence du fichier c'est pourquoi je pensait au IF, genre : si fichier present dans le rep alors , le renommer et verifier que le nouveau nom n'est pas present dans ce repertoire et mettre le tout dans une boucle de controle, mais je n'y arrive pas Soit c'est pas possible, soit ma syntaxe est mauvaise
Pourquoi vouloir utiliser find ? Dans ce cas précis, les tests sur les fichiers suffisent.
Help me please :)
Grand's
Philippe
"Rakotomandimby" a écrit dans le message news: bstt49$ovs$
Grand's wrote:
Salut,
Bonjour
Est-il possible de faire if [ find ...] then ... ??
En fait ou est l'interet ? Find est censé retourner une liste de fichiers , eventuellement un fichier
si on est sur .
if [...] est censé prendre quelquechose de "booléen" .
ce que vous pouvez faire c'est recuperer la sortie d'erreur de "find" et en
faire quelquechose ...
Mais c'est mon avis , et je ne suis pas pro du shell mais j'en ai des notions ...
Merci
--
http://mrakotom.free.fr
ghjghj a écrit dans le message <3ff27e7c$1_2@news.vo.lu>...
Salut,
Justement ce n'est pas la sortie d'erreur que je veux recuperer, mais la
presence du fichier
c'est pourquoi je pensait au IF, genre :
si fichier present dans le rep alors , le renommer et verifier que le
nouveau nom n'est pas present dans ce repertoire
et mettre le tout dans une boucle de controle, mais je n'y arrive pas
Soit c'est pas possible, soit ma syntaxe est mauvaise
Pourquoi vouloir utiliser find ?
Dans ce cas précis, les tests sur les fichiers suffisent.
Help me please :)
Grand's
Philippe
"Rakotomandimby" <mrakotom@free.fr> a écrit dans le message news:
bstt49$ovs$1@news-reader4.wanadoo.fr...
Grand's wrote:
Salut,
Bonjour
Est-il possible de faire if [ find ...] then ... ??
En fait ou est l'interet ?
Find est censé retourner une liste de fichiers , eventuellement un
fichier
si on est sur .
if [...] est censé prendre quelquechose de "booléen" .
ce que vous pouvez faire c'est recuperer la sortie d'erreur de "find" et
en
faire quelquechose ...
Mais c'est mon avis , et je ne suis pas pro du shell mais j'en ai des
notions ...
Justement ce n'est pas la sortie d'erreur que je veux recuperer, mais la presence du fichier c'est pourquoi je pensait au IF, genre : si fichier present dans le rep alors , le renommer et verifier que le nouveau nom n'est pas present dans ce repertoire et mettre le tout dans une boucle de controle, mais je n'y arrive pas Soit c'est pas possible, soit ma syntaxe est mauvaise
Pourquoi vouloir utiliser find ? Dans ce cas précis, les tests sur les fichiers suffisent.
Help me please :)
Grand's
Philippe
"Rakotomandimby" a écrit dans le message news: bstt49$ovs$
Grand's wrote:
Salut,
Bonjour
Est-il possible de faire if [ find ...] then ... ??
En fait ou est l'interet ? Find est censé retourner une liste de fichiers , eventuellement un fichier
si on est sur .
if [...] est censé prendre quelquechose de "booléen" .
ce que vous pouvez faire c'est recuperer la sortie d'erreur de "find" et en
faire quelquechose ...
Mais c'est mon avis , et je ne suis pas pro du shell mais j'en ai des notions ...
Merci
--
http://mrakotom.free.fr
Grand's
Effectivement un test suffit a me dire s'il existe ou pas Mais je teste si un fichier se trouvant dans le repA est present dans repB mon script donne a peu pres (pour le test uniquement):
for f in $A do if [ -f "$repB"] then ; while [ -f "repB" ] do; indice = $indice+1 f=$f$indice done fi mv $f /$repA
Mais ca ne marche pas Kelkun sait pourquoi ???
Grand's
"Philippe Delsol" a écrit dans le message news: 3ff29470$0$22318$
ghjghj a écrit dans le message <3ff27e7c$...
Salut,
Justement ce n'est pas la sortie d'erreur que je veux recuperer, mais la presence du fichier c'est pourquoi je pensait au IF, genre : si fichier present dans le rep alors , le renommer et verifier que le nouveau nom n'est pas present dans ce repertoire et mettre le tout dans une boucle de controle, mais je n'y arrive pas Soit c'est pas possible, soit ma syntaxe est mauvaise
Pourquoi vouloir utiliser find ? Dans ce cas précis, les tests sur les fichiers suffisent.
Help me please :)
Grand's
Philippe
"Rakotomandimby" a écrit dans le message news: bstt49$ovs$
Grand's wrote:
Salut,
Bonjour
Est-il possible de faire if [ find ...] then ... ??
En fait ou est l'interet ? Find est censé retourner une liste de fichiers , eventuellement un fichier
si on est sur .
if [...] est censé prendre quelquechose de "booléen" .
ce que vous pouvez faire c'est recuperer la sortie d'erreur de "find" et
en
faire quelquechose ...
Mais c'est mon avis , et je ne suis pas pro du shell mais j'en ai des notions ...
Merci
--
http://mrakotom.free.fr
Effectivement un test suffit a me dire s'il existe ou pas
Mais je teste si un fichier se trouvant dans le repA est present dans repB
mon script donne a peu pres (pour le test uniquement):
for f in $A do
if [ -f "$repB"] then ;
while [ -f "repB" ] do;
indice = $indice+1
f=$f$indice
done
fi
mv $f /$repA
Mais ca ne marche pas
Kelkun sait pourquoi ???
Grand's
"Philippe Delsol" <p.ns.delsol@BLACKHOLEfree.fr> a écrit dans le message
news: 3ff29470$0$22318$626a54ce@news.free.fr...
ghjghj a écrit dans le message <3ff27e7c$1_2@news.vo.lu>...
Salut,
Justement ce n'est pas la sortie d'erreur que je veux recuperer, mais la
presence du fichier
c'est pourquoi je pensait au IF, genre :
si fichier present dans le rep alors , le renommer et verifier que le
nouveau nom n'est pas present dans ce repertoire
et mettre le tout dans une boucle de controle, mais je n'y arrive pas
Soit c'est pas possible, soit ma syntaxe est mauvaise
Pourquoi vouloir utiliser find ?
Dans ce cas précis, les tests sur les fichiers suffisent.
Help me please :)
Grand's
Philippe
"Rakotomandimby" <mrakotom@free.fr> a écrit dans le message news:
bstt49$ovs$1@news-reader4.wanadoo.fr...
Grand's wrote:
Salut,
Bonjour
Est-il possible de faire if [ find ...] then ... ??
En fait ou est l'interet ?
Find est censé retourner une liste de fichiers , eventuellement un
fichier
si on est sur .
if [...] est censé prendre quelquechose de "booléen" .
ce que vous pouvez faire c'est recuperer la sortie d'erreur de "find"
et
en
faire quelquechose ...
Mais c'est mon avis , et je ne suis pas pro du shell mais j'en ai des
notions ...
Effectivement un test suffit a me dire s'il existe ou pas Mais je teste si un fichier se trouvant dans le repA est present dans repB mon script donne a peu pres (pour le test uniquement):
for f in $A do if [ -f "$repB"] then ; while [ -f "repB" ] do; indice = $indice+1 f=$f$indice done fi mv $f /$repA
Mais ca ne marche pas Kelkun sait pourquoi ???
Grand's
"Philippe Delsol" a écrit dans le message news: 3ff29470$0$22318$
ghjghj a écrit dans le message <3ff27e7c$...
Salut,
Justement ce n'est pas la sortie d'erreur que je veux recuperer, mais la presence du fichier c'est pourquoi je pensait au IF, genre : si fichier present dans le rep alors , le renommer et verifier que le nouveau nom n'est pas present dans ce repertoire et mettre le tout dans une boucle de controle, mais je n'y arrive pas Soit c'est pas possible, soit ma syntaxe est mauvaise
Pourquoi vouloir utiliser find ? Dans ce cas précis, les tests sur les fichiers suffisent.
Help me please :)
Grand's
Philippe
"Rakotomandimby" a écrit dans le message news: bstt49$ovs$
Grand's wrote:
Salut,
Bonjour
Est-il possible de faire if [ find ...] then ... ??
En fait ou est l'interet ? Find est censé retourner une liste de fichiers , eventuellement un fichier
si on est sur .
if [...] est censé prendre quelquechose de "booléen" .
ce que vous pouvez faire c'est recuperer la sortie d'erreur de "find" et
en
faire quelquechose ...
Mais c'est mon avis , et je ne suis pas pro du shell mais j'en ai des notions ...
Merci
--
http://mrakotom.free.fr
David LE BOURGEOIS
Salut,
Salut.
si fichier present dans le rep alors , le renommer et verifier que le nouveau nom n'est pas present dans ce repertoire et mettre le tout dans une boucle de controle, mais je n'y arrive pas Soit c'est pas possible, soit ma syntaxe est mauvaise
~/tmp $ cat _mv #!/bin/sh
[ "$2" = "" ] && exit 1
source="$1" destination="$2" indice="" [ -d "$destination" ] && destination="$destination/$(basename "$source")" while [ -e "$destination$indice" ] do let indice=indice+1 done mv "$source" "$destination$indice"
si fichier present dans le rep alors , le renommer et verifier que le
nouveau nom n'est pas present dans ce repertoire
et mettre le tout dans une boucle de controle, mais je n'y arrive pas
Soit c'est pas possible, soit ma syntaxe est mauvaise
david@abeille ~/tmp $ cat _mv
#!/bin/sh
[ "$2" = "" ] && exit 1
source="$1"
destination="$2"
indice=""
[ -d "$destination" ] && destination="$destination/$(basename "$source")"
while [ -e "$destination$indice" ]
do
let indice=indice+1
done
mv "$source" "$destination$indice"
si fichier present dans le rep alors , le renommer et verifier que le nouveau nom n'est pas present dans ce repertoire et mettre le tout dans une boucle de controle, mais je n'y arrive pas Soit c'est pas possible, soit ma syntaxe est mauvaise
~/tmp $ cat _mv #!/bin/sh
[ "$2" = "" ] && exit 1
source="$1" destination="$2" indice="" [ -d "$destination" ] && destination="$destination/$(basename "$source")" while [ -e "$destination$indice" ] do let indice=indice+1 done mv "$source" "$destination$indice"
for f in $A do if [ -f "$repB"] then ; while [ -f "repB" ] do; indice = $indice+1 f=$f$indice done fi mv $f /$repA
C'est quel shell, ca? En /bin/sh, on dit for f in $A; do (attention au point-virgule) Et aussi indice=`expr $indice + 1` (pas d'espace autour du =, `expr`)
Pour tester quels fichiers du repertoire A sont presents dans B:
for f in $A/* ; do test -f $B/`basename $i` && echo $f done
Si tu veux ceux qui ne sont pas présents, tu remplaces && par ||
Si tu veux faire du recursif, c'est un peu plus subtil: for f in `find $A -type f` ; do test -f $B/${f#A/} && echo $f done
On doit pouvoir reduire ca à une ligne avec find -exec mais je n'ai pas reussi.
Sinon, si tu veux faire des noms de fichiers non existants, essaye la commande mktemp.
-- Emmanuel Dreyfus Un bouquin en français sur BSD: http://www.eyrolles.com/php.informatique/Ouvrages/9782212112443.php3
Grand's <jhkljkl@jkl.com> wrote:
for f in $A do
if [ -f "$repB"] then ;
while [ -f "repB" ] do;
indice = $indice+1
f=$f$indice
done
fi
mv $f /$repA
C'est quel shell, ca?
En /bin/sh, on dit for f in $A; do (attention au point-virgule)
Et aussi indice=`expr $indice + 1` (pas d'espace autour du =, `expr`)
Pour tester quels fichiers du repertoire A sont presents dans B:
for f in $A/* ; do
test -f $B/`basename $i` && echo $f
done
Si tu veux ceux qui ne sont pas présents, tu remplaces && par ||
Si tu veux faire du recursif, c'est un peu plus subtil:
for f in `find $A -type f` ; do
test -f $B/${f#A/} && echo $f
done
On doit pouvoir reduire ca à une ligne avec find -exec mais je n'ai pas
reussi.
Sinon, si tu veux faire des noms de fichiers non existants, essaye la
commande mktemp.
--
Emmanuel Dreyfus
Un bouquin en français sur BSD:
http://www.eyrolles.com/php.informatique/Ouvrages/9782212112443.php3
manu@netbsd.org
for f in $A do if [ -f "$repB"] then ; while [ -f "repB" ] do; indice = $indice+1 f=$f$indice done fi mv $f /$repA
C'est quel shell, ca? En /bin/sh, on dit for f in $A; do (attention au point-virgule) Et aussi indice=`expr $indice + 1` (pas d'espace autour du =, `expr`)
Pour tester quels fichiers du repertoire A sont presents dans B:
for f in $A/* ; do test -f $B/`basename $i` && echo $f done
Si tu veux ceux qui ne sont pas présents, tu remplaces && par ||
Si tu veux faire du recursif, c'est un peu plus subtil: for f in `find $A -type f` ; do test -f $B/${f#A/} && echo $f done
On doit pouvoir reduire ca à une ligne avec find -exec mais je n'ai pas reussi.
Sinon, si tu veux faire des noms de fichiers non existants, essaye la commande mktemp.
-- Emmanuel Dreyfus Un bouquin en français sur BSD: http://www.eyrolles.com/php.informatique/Ouvrages/9782212112443.php3