Aqui está um pequeno script que chamei de test.py
. Ele aprimora outros métodos postados, pois ele retornará um código de erro se estiver definido e, adicionalmente, definirá um se o find não listar nenhum arquivo:
from subprocess import Popen
import sys
p = Popen(['find'] + sys.argv)
out, err = p.communicate()
if p.returncode:
sys.exit(p.returncode)
if not out:
sys.exit(1)
Aqui está a saída da linha de comando:
$ python test.py . -maxdepth 1 -name notthere
$ echo $?
1
$ find . -maxdepth 1 -name notthere
$ echo $?
0
$ find . -failedarg
find: unknown predicate '-failedarg'
$ echo $?
1
Em seguida, para um resultado em que o find encontrou erros, mas encontrou arquivos:
$ ls -lh
$ d--------- 2 jeff users 6 Feb 6 11:49 noentry
$ find .
.
./noentry
find: './noentry': Permission denied
$ echo $?
1
$ find . | egrep '.*'
.
./noentry
find: './noentry': Permission denied
$ echo $?
0
python ../test.py
../test.py
$ echo $?
1
Então, se você quiser a lista de arquivos, você pode usar -print 0
passado para find
e dividir a variável out em nulos, ou você pode simplesmente adicionar uma declaração de impressão para ela.