O número de hardlinks para um diretório corresponde ao número de subdiretórios nele?

2

Ao exibir diretórios usando ls -l , seu número de links (o segundo campo na saída) é pelo menos dois: um para o nome da pasta e outro para .

$ mkdir foo
$ ls -l
total 2
drwxr-xr-x  2 user   wheel  512  4 oct 14:02 foo

É seguro assumir que o número de links acima de 2 corresponde ao número de subdiretórios nesse diretório ( .. links)?

    
por Eugene Yarmash 04.10.2010 / 13:14

4 respostas

1

Embora geralmente você só possa usar links simbólicos para diretórios, o que não afetará a contagem de links, há algumas circunstâncias em que links rígidos são possíveis para diretórios (o recurso TimeMachine da IIRC OSX usa esses links) para que nem sempre seja garantido .

Você seria mais seguro ao passar uma varredura usando ls e grep (ou talvez find ) para o comando wc para contar o número de subdiretórios realmente presentes, em vez de tentar adivinhar os diretórios atuais contagem de links.

    
por 04.10.2010 / 13:39
2

Você está correto em observar que todos os diretórios contêm. e .., então se você subtrair dois da saída de

ls -la | grep '^d' | wc -l

você deve obter o número de diretórios em seu diretório de trabalho atual.

    
por 04.10.2010 / 13:34
2

isso não responde a sua pergunta sobre ls -l, mas eu uso tree -d para isso, funciona muito bem.

    
por 04.10.2010 / 14:01
0

Eu usaria o find

find ./foo -type d | wc -l

eventualmente com a opção -maxdepth

    
por 04.10.2010 / 13:50