
Estou tentando usar find . -type d -print | wc -m
onde -m
ou --chars
imprimiria 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?
Responder1
find . -type d -print | tr -d '\n' | wc -m
tr
excluirá todos os caracteres de nova linha e wc
contará 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 -n
remove 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 ct
para a saída de wc -lm
e 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))