On 10 May 2001 13:39:43 +0200,
    Jean-Albert Ferrez <[EMAIL PROTECTED]> wrote:

>     On 10 May 2001 13:12:01 +0200,
>     Jean-Albert Ferrez <[EMAIL PROTECTED]> wrote:
> 
> > Si tu ne veux que le nom des fichiers qui "matchent" et qu'il faut aller
> > vite, je propose (attention: syntaxe csh, à adapter)
> > 
> > foreach i (*.java)
> >   grep -q matrix $i && grep -q norm $i && echo $i
> > end
> 
> Variante (en sh cette fois) pour spécifier plus facilement la liste des
> pattern :
> 
> for i in *.java ; do
>   ( for j in matrix norm ; do
>       grep -q $j $i || exit
>     done
>     echo $i )
> done
> 
> > Pour optimiser, classer les patterns par ordre croissant de nombre
> > d'occurences.

Optimiser, c'est bien le mot qui me gène dans tout ce qui précède. Avec N
fichiers et M mots à trouver, on lance dans le pire des cas N*M commandes
grep, plus N sous shells (à cause des parenthèses). Beurk. Essayons autre
chose :


#!/bin/bash
[ $# -lt 2 ] && \
  { echo "Usage: $0 \"quoted list of strings to match\" [files]..."; exit; }
names=$1
shift
foobar=$*
for i in $names ; do
  foobar=`grep -l $i $foobar` || exit
done
echo $foobar | tr \  \\n



UNIX, j'arrête quand je veux.

-- 
   ___  _  ___    Jean-Albert FERREZ        [EMAIL PROTECTED]
  '  / / \ \      EPFL  -  Chaire de Recherche Operationnelle  -  ROSO
 ,--/-/---\-\---------------------------------------------------------
 \_/ /     \ \                http://rosowww.epfl.ch/jaf/

--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question. Ouais, pour se désabonner aussi.

Répondre à