JF Straeten a écrit :
Re, On Wed, Feb 08, 2012 at 04:41:02PM +0000, jerome.moliere@gmail.com 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 findAvec 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