← Back to team overview

sslug-teknik team mailing list archive

Re: Boolean svar med find

 

Peter Makholm <peter@xxxxxxxxxxx> writes:

> if [ ! -z `find ... -print0` ] then
>   # Fandt noget
> fi

Vil nok ikke virke af samme grund som at -print0 var nødvendig hvis du
har filnavne med mellemrumstegn i.

'! -z' og '-n' burde selvfølgelig være ækvivalente. Det fik mig lige
til at overveje hvorfor de ikke opførte sig ens. Følgende bør virke
for alle mulige filnavne:

if [ "`find ... -print0`" ] then
  # Fandt noget
fi

Jeg har endda afprøvet det (i ash):

$ find -mindepth 2      
$ if [ -n "`find -mindepth 2`" ] ; then echo fandt noget ; fi
$ find -mindepth 0
.
./foo
./bar
./baz
$ if [ -n "`find -mindepth 0`" ] ; then echo fandt noget ; fi
fandt noget
$ 

-- 
 Peter Makholm     |        We constantly have to keep in mind why natural
 peter@xxxxxxxxxxx |    languages are good at what they're good at. And to
 http://hacking.dk |     never forget that Perl is a human language first,
                   |                        and a computer language second


Follow ups

References