Cómo contar el número de archivos en un directorio pero no recursivamente


30

Pregunta simple, estoy seguro. He visto una respuesta que muestra cómo hacerlo, incluidos los subdirectorios, pero quiero saber cuántos archivos (no carpetas) están solo en el directorio actual. Gracias.

Respuestas:


60
ls -F |grep -v / | wc -l
  1. ls -F enumerar todos los archivos y agregar indicador (uno de * / => @ |) a las entradas
  2. grep -v /mantener todas las cadenas que no contengan una barra
  3. wc -l contar líneas

Lista de todo excepto directorios.
Thom

Realmente aprecio que lo hayas explicado y explicado en las secciones, ¡gracias por una respuesta bien explicada!
bcsteeve

1
Si bien todas las respuestas resuelven mi problema, elijo esta como documentada y más fácil de entender. Pero gracias a todos!
bcsteeve

15

Prueba este oneliner:

find -maxdepth 1 -type f | wc -l

Esto es bueno, solo archivos y nada más :-)
thom

Esto omite enlaces y dispositivos de caracteres especiales.
ojblass el

¡Todas las respuestas aquí funcionan muy bien! Primero, GRACIAS. Segundo ... ¿cómo elijo?
bcsteeve

6

Prueba esto

ls -al | grep ^[-] | wc -l
  1. ls -al - Listar todos los archivos con formato de listado largo
  2. grep ^[-] - busque una cadena que comience con "-" que es un símbolo para denotar el archivo normal cuando el archivo de lista con ls -al
  3. wc -l - recuento de líneas

¿Qué pasa con los enlaces blandos? ¿Qué pasa con los archivos vinculados?

Bonito, solo archivos y enlaces, nada más.
Thom

Para enlace de enlace suave / duro, reemplace -porl
andr3w

Realmente aprecio que lo hayas explicado y explicado en las secciones, ¡gracias por una respuesta bien explicada!
bcsteeve

2

Solo quiero agregar la respuesta de Thom porque me gusta jugar con Bash . Aquí va:

echo "Directory $(pwd) has $(ls -F |grep -v / | wc -l) files"

A continuación se muestra un ejemplo de mi /datadirectorio:

Directory /data has 580569 file(s).

Y abajo están mis explicaciones:

  1. echo double-quoted-message imprimirá un mensaje deseable.
  2. $(any-desirable-valid-command)dentro del mensaje doblemente citado de un echoimprimirá el resultado de la ejecución del comando relacionado.
  3. pwd imprimirá el directorio actual.
  4. ls -Fes para listar todos los archivos y agregar el indicador (uno de * / => @ |) a las entradas. Copié esto de la respuesta de Thom .
  5. grep -v /es un comando para buscar texto sin formato, el -v /parámetro mantendrá todas las cadenas que no contengan barra (s).
  6. wc -l imprimirá el recuento de líneas.

Sé que esta pregunta tiene 3 años, simplemente no puedo contener mi impulso de agregar otra respuesta.


2

Si ha treeinstalado en su sistema, puede usar este comando:

tree -L 1 /path/to/your/directory | tail -n 1

Le muestra la cantidad de archivos y directorios en ese directorio.

-L n Muestra la profundidad de la búsqueda.

Se puede instalar treecon sudo apt-get install tree.


-3

Para contar la cantidad total de archivos con extensión específica, puede escribir:

ls|grep jpg |wc -l
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.