scripts script paso pasar parametros manejo hacer español ejemplos como comando cadenas bash file-listing

paso - scripts bash ejemplos



¿Cómo enumerar solo los archivos en Bash? (8)

¿Cómo puedo enumerar todos los archivos de una carpeta pero no sus carpetas o subarchivos? En otras palabras: ¿cómo puedo hacer una lista solo de los archivos?


"find ''-maxdepth''" no funciona con mi versión anterior de bash, por lo tanto uso:

para f en $ (ls); hacer si [-f $ f]; luego echo $ f; fi; hecho


Con regex:

ls -al | egrep -v "^ d. *"


Solo agregando a la respuesta de carlpett. Para una vista mucho más útil de los archivos, puede canalizar la salida a ls.

find . -maxdepth 1 -type f|ls -lt|less

Muestra los archivos modificados más recientemente en un formato de lista, bastante útil cuando ha descargado muchos archivos, y desea ver una versión no recargada de los recientes.


También puede usar ls con grep o egrep y ponerlo en su perfil como un alias:

ls -l | egrep -v ''^d'' ls -l | grep -v ''^d''


Usando find :

find . -maxdepth 1 -type f

El uso de la opción -maxdepth 1 garantiza que solo busque en el directorio actual (o, si reemplaza el -maxdepth 1 alguna ruta, ese directorio). Si desea una lista recursiva completa de todos los archivos en ese y subdirectorios, simplemente elimine esa opción.


ls -p | grep -v /

ls -p le permite mostrar / después del nombre de la carpeta, que actúa como una etiqueta para que elimine.


{ find . -maxdepth 1 -type f | xargs ls -1t | less; }

se agregó xargs para que funcione, y se usó -1 lugar de -l para mostrar solo los nombres de archivo sin información adicional de ls


  • La respuesta basada en find . -maxdepth 1 -type f ( find . -maxdepth 1 -type f ) funciona en principio, pero no es lo mismo que usar ls : se obtiene una lista potencialmente no ordenada de nombres de archivos, todos con el prefijo ./ , y se pierde la posibilidad de aplicar ls muchas opciones ;
    también find invariablemente encuentra elementos ocultos también , mientras que el comportamiento de ls depende de la presencia o ausencia de las opciones -a o -A .

    • Una mejora , sugerida por Alex Hall en un comentario sobre la pregunta es combinar el globbing de shell con find :

      find * -maxdepth 0 -type f # find -L * ... includes symlinks to files

      • Sin embargo, aunque esto resuelve el problema del prefijo y le da salida ordenada alfabéticamente , usted todavía no tiene control (en línea) sobre la inclusión de elementos ocultos ni acceso a muchas otras opciones de clasificación / formato de salida de ls .
  • La respuesta ls + grep Hans Roggeman es pragmática, pero te bloquea para utilizar el formato de salida largo ( -l ) .

Para abordar estas limitaciones, escribí la utilidad fls ( f iltering ls ) ,

  • una utilidad que proporciona la flexibilidad de salida de ls tiempo que proporciona capacidad de filtrado de tipos ,
  • simplemente colocando caracteres de filtrado de tipo como f para archivos, d para directorios yl para enlaces simbólicos antes de una lista de argumentos ls (ejecute fls --help o fls --man para obtener más información).

Ejemplos:

fls f # list all files in current dir. fls d -tA ~ # list dirs. in home dir., including hidden ones, most recent first fls f^l /usr/local/bin/c* # List matches that are files, but not (^) symlinks (l)

Instalación

Plataformas compatibles

  • Al instalar desde el registro npm : Linux y macOS
  • Al instalar manualmente : cualquier plataforma tipo Unix con Bash

Del registro npm

Nota: incluso si no usa Node.js, su administrador de paquetes, npm , funciona en todas las plataformas y es fácil de instalar; tratar
curl -L https://git.io/n-install | bash

Con Node.js instalado, instálelo de la siguiente manera:

[sudo] npm install fls -g

Nota :

Instalación manual

  • Descarga este script bash como fls .
  • Hazlo ejecutable con chmod +x fls .
  • Muévelo o conéctelo a una carpeta en su $PATH , como /usr/local/bin (macOS) o /usr/bin (Linux).