Se você quiser ver se há diretórios correspondentes a esse padrão de nome, você pode ter find
imprimindo alguma saída fictícia para eles e ver se a saída estava vazia. Por exemplo:
if [[ "$(find -type d -name "dir*" -printf .)" ]] ; then
echo "some matching directory exists"
else
echo "no matching directory exists"
fi
Você também pode ter find
executar um comando para os arquivos encontrados, apenas adicionando o -exec bash -c '...' _ {} \;
após o -printf
. Se o comando não produzir nenhuma saída, isso deve ficar bem.
Ele fica um pouco pior se você precisar capturar a saída do comando iniciado por find
e mantê-lo separado da saída fictícia: você precisará de arquivos temporários ou de truques de redirecionamento. Isso deve executar somecmd
em quaisquer diretórios correspondidos por find
, direcionando a saída das execuções de somecmd
para o stdout de scripts e, em seguida, informando se houve alguma correspondência.
exec 3>&1
any=$(find -type d -name "dir*" -printf . -exec bash -c 'somecmd "$1" >&3' _ {} \; )
if [[ "$any" ]] ; then
echo "matching directories were processed"
else
echo "no matching directory exists"
fi
exec 3>&-
É claro que, se o comando iniciado por find
sempre produzir a saída, não há necessidade da saída fictícia. Apenas capture o que for que find
imprime e veja se estava vazio.