Imprimir nomes de pastas, contagem de caracteres

Imprimir nomes de pastas, contagem de caracteres

Estou tentando usar find . -type d -print | wc -monde -mou --charsimprimiria a contagem de caracteres dos nomes das pastas.

Veja a captura de tela a seguir como exemplo, a contagem de caracteres parapasta temporária+pasta temporária+pasta dingdongé apenas34, e a contagem de barras e pontos do evento ainda é40. Por que o comando é impresso43personagens? De onde vêm os 3 personagens extras?

insira a descrição da imagem aqui

Responder1

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

trexcluirá todos os caracteres de nova linha e wccontará o número desejado.

Responder2

Aparentemente, as novas linhas finais também são contadas como caracteres.

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

O que soma os 40 que você está procurando. Observe que echo -nremove as novas linhas finais.

Somar esses três também é possível.

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

Responder3

Defina uma matriz bash/ksh/zsh ctpara a saída de wc -lme use a aritmética do shell.

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

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

set $(find . -type d -print |wc -lm); echo $(($2 - $1))

informação relacionada