Se você quiser apenas encontrar diretórios correspondentes a um determinado padrão / prefixo, eu acho que você poderia usar apenas find
:
find /target/directory -type d -name "prefix*"
ou, se você quiser apenas subdiretórios imediatos :
find /target/directory -maxdepth 1 -type d -name "prefix*"
Claro, também há -regex
se você precisar de uma correspondência regex real. (ressalva: não me lembro se -maxdepth é um gnu-ismo.)
(update) Certo, você queria uma declaração if. Find sempre retorna um zero, então não podemos usar o valor de retorno para verificar se algo foi encontrado (diferente do grep). Mas podemos, por exemplo conte as linhas. Canalize a saída através de wc
para obter a contagem e, em seguida, veja se não é zero:
if [ $(find /target/directory -type d -name "prefix*" | wc -l ) != "0" ] ; then
echo something was found
else
echo nope, didn't find anything
fi