Essa é um constante para quem usa terminal bastante então vou registrar aqui o que vi nesse link.
O problema é o seguinte, todo mundo usa ls mas dentro das zilhões de opções dele nunca encontra como listar apenas diretórios, e a resposta infelizmente não é tão clara mesmo. Qual seria a alternativa bash para o DIR /ad do DOS?
O Problema não é que não existe uma, o problema é que existem várias heheheh
Eis algumas:
1. $ ls -d */ (usando o ls)
2. $ echo */ (essa foi completamente inesperada pra mim)
3. $ tree -d -L 1 (o elegante tree que todos esquecem)
4. $ find . -maxdepth 1 -mindepth 1 -type d (find, ele faz tudo que você quiser)
O ponto chave nas duas primeiras opções é observar que o nome dos diretórios no linux sempre termina em "/". Então basta usar "*/" no lugar de apenas "*" para mencionar somente diretórios naquele caminho. O "-d" no caso do ls é pra que não seja mostrado o conteúdo dos diretórios também (que é o padrão), apenas seus nomes. O tree foi feito para ver sua árvore de diretórios mesmo, fica obsoleto com os navegadores atuais, mas pode ser útil em scripts. E o find resolve qualquer problema hehehhe.
Se você acha incoveniente lembrar de todos os parâmetros, faça o seu scriptizinho "lsdir" e coloque em /usr/local/bin com permissão de execução (755 por exemplo):
#!/bin/sh
for i in $(ls -d */); do echo ${i%%/}; done
Já fiz aqui o meu hehehehe
Assinar:
Postar comentários (Atom)
2 comentários:
Mto bom...estava procurando isso e o FIND resolveu!
É, "lsdir", Uma Boa idéia! :)
Obrigado.
Postar um comentário