Como encontrar apenas arquivos, com qual comando xyz termina com sucesso?

2

Estou tentando encontrar todos os arquivos que fazem com que um determinado comando termine com sucesso (código de saída 0).

A página man find diz sobre -exec: Execute command; true if 0 status is returned.

Embora listado em Actions , pensei, isso significa que os arquivos que fazem o dado command terminar com 0 serão exibidos.

Usos anteriores e tentativas com find . -exec true \; e find . -exec false \; , que não deram resultado, provam que estou errado.

Uma chamada de amostra seria find . -exec ./is_dir.py {} \; , que deve imprimir todos os diretórios encontrados. (Eu sei, que você pode testar para este caso em particular. Eu não consegui encontrar uma combinação de testes, que satisfaça minhas reais necessidades.)

Deixar de formular o meu problema é o suficiente, a pesquisa não resultou em resultados.

    
por Minix 03.11.2014 / 13:41

1 resposta

3

Você pode fazer:

find . -exec ./is_dir.py {} \; -o -print

Ele listará tudo o que não é um diretório. Supondo que is_dir.py seja executável ( chmod +x is_dir.py ) e contenha algo como:

#!/usr/bin/env python

import sys
import os

if os.path.isdir(sys.argv[1]):
    sys.exit(0)
sys.exit(1)

E se is_dir.py gerar uma saída própria, você pode fazer:

 rm -f nondir.lst
 find . -exec ./is_dir.py {} \; -o -exec echo  {} >> nondir.lst \;

para que seu outoput não seja misturado com a lista de nomes para os quais is_dir.py falha.

    
por 03.11.2014 / 13:59

Tags