[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Opportunité de script shell



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
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


Reply to: