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

Re: Opportunité de script shell



Un gd merci nicolas
C est cela
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
Lol
---- Envoyé avec BlackBerry® d'Orange ----

-----Original Message-----
From: Nicolas Bercher <nbercher@yahoo.fr>
Date: Wed, 08 Feb 2012 17:02:22 
To: jerome moliere<jerome.moliere@gmail.com>
Cc: debian-utilisateur<debian-user-french@lists.debian.org>
Subject: Re: Opportunité de script shell

jerome moliere a écrit :
> Bonjour à tous,
> je ne suis pas très scripts shells mais là je soupçonne avoir
> l'occasion d'en faire un , du coup je  ne sais pas trop comment m'y
> prendre...
> En gros mon besoin: je dois trouver dans qq milliers de répertoires
> descendant de repos svn lesquels ne conttiennent pas un fichier donné
> (toto.txt disons) sachant qu'ils doivent contenir un tata.txt (pour en
> filtrer la majeure partie déjà)
> 
> je pensais à find mais je ne vois pas comment dire d'exclure (inclure
> pas de souci) un pattern donné, donc faire la négation...
> une grosse boucle for ? ca va ramer non?
> 
> bref votre avis m'intéresse...
> pas de perl je suis allergique -)
> un zsh serait il mieux armé qu'un bash pour cela ?
> 
> en regardant xargs je suis tombé sur gnu parallel mais il ne semble
> être dans les repo ..c'est normal ?
> j'ai trouvé un truc appelé r-cran mais est ce la même chose ?

Voici, je pense une solution avec un find et une fonction bash:

Soit l'arborescence suivante:

$ find
.
./a
./a/b
./a/b/c
./a/b/c/tata.txt
./a/b/c/toto.txt
./a/b/tata.txt
./a/toto.txt

et le script suivant:
---------------8<---------------
#!/bin/bash
#
# name: testifandifnot
#

function dirok () {
   [ -f "${1}"/tata.txt ] && [ ! -f "${1}"/toto.txt ] && echo "${1}"
}
export -f dirok

find . -type d -exec bash -c 'dirok "$1"' _ {} \;

---------------8<---------------

Voici le résultat:

$ ./testifandifnot
./a/b

$ ls -1 ./a/b
c
tata.txt


Est-ce bien cela?

Nicolas

Reply to: