find + get $? diff de saída, em seguida, 0 quando encontrar não coincidem com a palavra

2

quando eu executo

  find /tmp  -name something 

comando find não encontra a palavra em / tmp

  echo $?

  I get $?=0

está tudo bem

mas como ativar Exit status diff então 0 quando o comando find não encontrar a palavra alguma coisa?

    
por yael 23.01.2011 / 15:19

2 respostas

1

find retornará 0 se for executado com êxito e diferente de zero se houver erros. Não define o código de saída com base em se alguma coisa foi encontrada. Você precisará fazer algo assim:

files=$(find /tmp  -name something)
if [[ -n "$files" ]]
then
    echo "files were found"
fi

É mais provável, no entanto, que você queira fazer algo com os nomes dos arquivos. Você pode processá-los em um loop:

find /tmp  -name something | while read -r filename
do
    echo "found: $filename
done

ou

while read -r filename
do
    echo "found: $filename
done < <(find /tmp  -name something)

Se nada for encontrado, o loop sairá sem fazer nada.

    
por 23.01.2011 / 16:54
1

Eu sinto que este é o método mais conciso e direto:

test "'find /tmp/ -name something -print -quit 2>/dev/null'"
    
por 06.02.2013 / 19:52

Tags