GNU/Linux >> Tutoriales Linux >  >> Linux

Obtenga todas las extensiones y su respectivo recuento de archivos en un directorio

Solución 1:

/var/cache$ sudo find ./ -type f | grep -E ".*\.[a-zA-Z0-9]*$" | sed -e 's/.*\(\.[a-zA-Z0-9]*\)$/\1/' | sort | uniq -c | sort -n
      1 .6
      1 .cache
      1 .noconf
      1 .php
      1 .sl
      2 .bin
      2 .el
      2 .tdb
      4 .baseA
      4 .baseB
      4 .dat
      4 .DB
     27 .db
    221 .deb

Aquí está la explicación:

find ./ -type f

encuentra solo el archivo, no el directorio

grep -E ".*\.[a-zA-Z0-9]*$"

filtrar archivo con extensión

sed -e 's/.*\(\.[a-zA-Z0-9]*\)$/\1/'

elimine la ruta y el nombre del archivo, guarde solo la extensión

sort | uniq -c | sort -n

ordenar, unificar y ordenar

Solución 2:

Dado que está usando Linux (gnu grep), este es un buen momento para usar Perl REs (PCRE) -P y -o de grep opción. Tomando la respuesta de @bindbn como un gran candidato:

find . -type f | grep -Po '\.([\w\d])*$' | sort | uniq -c | sort -n

Linux
  1. ¿Cómo puedo encontrar todas las extensiones de archivo distintas en una jerarquía de carpetas?

  2. ¿Cómo enumerar el tamaño de cada archivo y directorio y ordenar por tamaño descendente en Bash?

  3. Cree un archivo zip e ignore la estructura del directorio

  4. Convertir todas las extensiones de archivo a minúsculas

  5. comando de linux para vaciar todos los archivos de un directorio

Cómo copiar archivos y directorios en Linux

Cómo tar tipos de archivos específicos (extensiones) en un directorio

`^m` ¿Y cómo deshacerse de él?

¿Buena combinación de navegador de archivos gráfico y de línea de comandos?

Administre directorios y permisos de archivos con chmod Recursive

Obtenga el archivo más reciente en un directorio en Linux