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.