¿Se puede utilizar el árbol para enumerar la cantidad de archivos por nivel?

¿Se puede utilizar el árbol para enumerar la cantidad de archivos por nivel?

Necesito buscar en un directorio en particular y enumerar la cantidad de archivos por nivel. El directorio es bastante grande, con una profundidad de entre 10 y 15 niveles. Por ejemplo, si tengo lo siguiente:

D1
|
|-- D2A (5 files in this directory)
|    |-- D3A (6 files in this directory)
|    |-- D3B (7 Files in this directory)
|
|-- D2B (1 file in this directory)

Entonces debería decirme que el nivel 3 tiene 13 archivos y el nivel 2 tiene 6 archivos (o 6+13, no importa). ¿Puede Treelograr esto? Intenté mezclar las opciones pero no parece funcionar.

Respuesta1

find . -type d | \
perl -ne 'BEGIN{ sub cnt{ $file=shift; $c="find $file -maxdepth 1 -type f | wc -l";int(`$c`) }} chomp; printf "%s %s\n", $_, cnt($_)' | \
perl -ne '/^(.*) (\d*)$/; $_{scalar(split /\//, $1)}+=$2; END { printf "Depth %d has %d files.\n", @$_ for map { [$_,$_{$_}] } sort keys %_ }'

Resultados:

Depth 1 has 7 files.
Depth 2 has 2353 files.
Depth 3 has 2558 files.
Depth 4 has 8242 files.
Depth 5 has 6452 files.
Depth 6 has 674 files.
Depth 7 has 1112 files.
Depth 8 has 64 files.
Depth 9 has 154 files.

Respuesta2

Dudo que treepueda lograr esto. Sin embargo, findpuede:

find . -mindepth 3 -maxdepth 3 -type f | wc -l

devolvería el número de archivos en el nivel 3.

Respuesta3

tree | sed 's/ //g;s/`/\|/g;s/-.*//g' | sort | uniq -c | grep \|

Resultados:

     35 |
    186 ||
   1408 |||
    691 ||||

El carácter de barra vertical (|) indica la profundidad.

información relacionada