JF Straeten a écrit :
Re,

On Wed, Feb 08, 2012 at 04:41:02PM +0000, [email protected] wrote:

Je me suis fait une appli java qui donne la meme chose...mais je
suis decu de ne pas pouvoir combiner des criteres complexes dans
find

Avec find, tu peux nier une condition de la recherche avec "!".


jfs@jones:/tmp$ find a/ \! -iname "toto.txt"
a/
a/b
a/b/c
a/b/c/tata.txt

jfs@jones:/tmp$ find a/ \! -iname "toto.txt" -o -iname "tata.txt"
a/
a/b
a/b/c
a/b/c/tata.txt

jfs@jones:/tmp$ find a/ -iname "toto.txt" -o -iname "tata.txt"
a/toto.txt
a/b/c/toto.txt
a/b/c/tata.txt


Faut voir si t'arriver à crafter la recherche exacte que tu veux avec
ça...

C'est équivalent à -not il me semble.  Mais de toutes manières le
problème n'est pas solvable avec find tout seul car il ne peut tout
simplement pas faire un test simultané sur deux path à la fois!

find ne fait que de lister l'un après l'autre les fichiers qu'il
rencontre dans sa descente récursive et leur applique une batterie de
tests, il ne peut donc pas appliquer un test à un fichier voisin de
celui qu'il est en train de tester.

Si tu tests un path et qu'il matche tata.txt, nécessairement, il ne
matchera pas toto.txt, tous ces tests étant indépendants.  On ne peut
donc pas tester simultanément la présence ou non de deux fichiers en
même temps avec find.

Par contre, en travaillant sur les répertoires --type d) et en invoquant
-exec sur une commande qui elle peut analyser le contenu d'un
répertoire, cela fonctionne.

Nicolas

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers [email protected]
En cas de soucis, contactez EN ANGLAIS [email protected]
Archive: http://lists.debian.org/[email protected]

Répondre à