Confuso com a solução de alias?

1

Estou tentando definir um alias para um grupo de comandos contando recursivamente e exibindo o número de todos os subdiretórios encontrados para qualquer diretório de trabalho (incluindo aqueles com nomes de arquivos invisíveis). Até agora o que fiz foi:

ls -R | wc -l

Mas não exibe o número de arquivos ocultos. Então eu tentei este comando:

ls -l | grep ^d | wc -l

Mas não tenho certeza se é o comando certo ou não?

    
por Narwen 14.11.2013 / 10:32

3 respostas

1

Você deve nunca analisar a saída de ls . Veja algumas explicações aqui:

Como outros recomendaram, use find . E a melhor maneira (mesmo quando você tem nomes de diretório que contenham novas linhas ou outros tipos de espaço em branco) seria:

alias countdir='find . -type d -print0 | tr -dc "\0" | wc -c'

Veja man find , man tr , man wc para mais informações.

    
por Radu Rădeanu 14.11.2013 / 10:40
0

find . -type d|wc -l é uma solução?

    
por Clausi 14.11.2013 / 10:40
0

Eu recomendaria usar find ( página de manual ) para faça a pesquisa. Como exemplo,

find . -maxdepth 1 -type d | wc -l

imprimirá o número de todos os diretórios no diretório de trabalho atual.

A opção -maxdepth controla até que ponto find irá descer nos diretórios. Com um valor de 1 , ele apenas usará o diretório atual e listará seus subdiretórios. Com 2 , ele também listará os subdiretórios dos subdiretórios e assim por diante.

Isso tem apenas uma pequena desvantagem: find inclui . (o diretório de trabalho atual) em sua listagem, portanto, o número retornado por wc -l será desativado em um.

    
por drc 14.11.2013 / 10:43