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.

bcsteeve
fuente

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
thom
fuente
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
amc
fuente
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
andr3w
fuente
¿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.

Aditya Kresna
fuente
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.

MOHRE
fuente
-3

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

ls|grep jpg |wc -l
Alexander Chip
fuente