Listar diretórios sem erros se não existirem

2

Eu tenho um conjunto bastante restrito de especificações para uma listagem de diretórios que eu preciso:

  1. Deve listar os diretórios no diretório atual
  2. Deve listar apenas o nome da base (sem "./", sem barra final)
  3. Não deve haver erro se não houver nenhum (e não deve imprimir um erro para std {out, err}})
  4. Deve ser muito leve
  5. Deve funcionar em tcsh

Eu tenho algo que funciona assim:

find -maxdepth 1 -mindepth 1 -type d -printf '%f\n'

Mas não posso deixar de sentir que usar "find" é um exagero. Eu tentei fazer algo com ls -d */ , mas não consegui descobrir como obtê-lo não erro (ou parece não erro).

Alguma sugestão?

    
por spookypeanut 26.03.2013 / 15:19

1 resposta

1

Pessoalmente, eu diria que o comando find é o caminho a seguir.

A abordagem ls -d tem dois problemas agora:

  • Mostra um erro nos diretórios vazios.
  • Imprime barras finais.

Ambos são consertáveis. tr pode cuidar das barras, e você precisa de redirecionamento para se livrar de mensagens de erro :

( ls -d */ | tr -d / > /dev/tty ) > & /dev/null

Veja man tcsh para mais informações.

    
por 26.03.2013 / 15:42

Tags