quinta-feira, abril 26, 2007

ls Como listar apenas diretórios no Linux

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

2 comentários:

Anônimo disse...

Mto bom...estava procurando isso e o FIND resolveu!

R. TICS disse...

É, "lsdir", Uma Boa idéia! :)
Obrigado.