Imprimir nombres de carpetas número de caracteres

Imprimir nombres de carpetas número de caracteres

Estoy intentando utilizar find . -type d -print | wc -mdónde -mo --charsimprimiría el recuento de caracteres de los nombres de las carpetas.

Tome la siguiente captura de pantalla como ejemplo, el recuento de caracteres paracarpeta temporal+carpeta temporal+dingdongCarpetaes solo34, y el evento que cuenta las barras y los puntos sigue siendo40. ¿Por qué se imprime el comando?43¿caracteres? ¿De dónde vienen los 3 personajes extra?

ingrese la descripción de la imagen aquí

Respuesta1

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

treliminará todos los caracteres de nueva línea y wccontará el número que desee.

Respuesta2

Aparentemente, las nuevas líneas finales también se cuentan como un carácter.

Supongamos que desea el recuento de caracteres por directorio, puede hacerlo

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

Lo cual suma los 40 que buscas. Tenga en cuenta que echo -nelimina las nuevas líneas finales.

También es posible sumar estos tres.

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

Respuesta3

Establezca una matriz bash/ksh/zsh ctcomo salida de wc -lmy luego use la aritmética del shell.

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

O utilice división de campos y parámetros posicionales:

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

información relacionada