Imprime a contagem de caracteres de nomes de pastas

1

Estou tentando usar find . -type d -print | wc -m , em que -m ou --chars imprime as contagens de caracteres dos nomes das pastas.

Veja a captura de tela a seguir como exemplo, a contagem de caracteres para tempFolder + tempFolder + dingdongFolder é somente 34 e o evento que conta as barras e pontos ainda é 40 . Por que o comando imprime 43 caracteres? De onde são os 3 personagens extras?

    
por KMC 18.07.2012 / 08:41

3 respostas

2

find . -type d -print | tr -d '\n' | wc -m

tr excluirá todos os caracteres de nova linha e wc contará o número desejado.

    
por 18.07.2012 / 10:25
1

Aparentemente, novas linhas são contadas como um caractere também.

Suponha que você queira a contagem de caracteres por diretório, você pode fazer

$ find -type d -exec bash -c 'echo -n $0 | wc -m' {} \; 
1
12
27

Que somam os 40 que você está procurando. Observe que o echo -n remove as novas linhas finais.

A soma desses três também é possível.

$ find -type d -exec bash -c 'echo -n $0 | wc -m' {} \; | awk '{S+=$1} END  {print(S)}'
40
    
por 18.07.2012 / 09:27
1

Defina uma matriz bash / ksh / zsh ct para a saída de wc -lm e, em seguida, use a aritmética de shell.

ct=($(find . -type d -print |wc -lm)); echo $((ct[1]-ct[0]))

Ou use parâmetros de divisão de campo e posicionais:

set $(find . -type d -print |wc -lm); echo $(($2 - $1))
    
por 18.07.2012 / 10:18