A quebra nos espaços ocorre no comando read
, mas você não precisa disso de qualquer maneira. Além disso, sua lógica if
é falha. Só funcionaria se my_dir
fosse igual a .
, caso contrário, find
não geraria .
em sua saída. Finalmente, você afirma no seu exemplo, que você quer apenas os nomes dos diretórios, não o caminho completo, mas da maneira como você o escreveu, find
passaria o caminho para o stdout.
Aqui está uma solução mais fácil:
find "$my_dir" -maxdepth 1 -type d -exec basename {} \;|tail -n +2
O truque aqui é o comando tail
. Você deseja excluir o diretório inicial ( $my_dir
) da saída. find
sempre gera este diretório primeiro (a menos que você requeira explicitamente o primeiro sentido de profundidade), então você simplesmente precisa descartar a primeira linha da saída resultante.