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 usarls: se obtiene una lista potencialmente no ordenada de nombres de archivos, todos con el prefijo./, y se pierde la posibilidad de aplicarlsmuchas opciones ;
tambiénfindinvariablemente encuentra elementos ocultos también , mientras que el comportamiento delsdepende de la presencia o ausencia de las opciones-ao-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.
- 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
La respuesta
ls+grepHans 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
lstiempo que proporciona capacidad de filtrado de tipos , - simplemente colocando caracteres de filtrado de tipo como
fpara archivos,dpara directorios yl para enlaces simbólicos antes de una lista de argumentosls(ejecutefls --helpofls --manpara 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 :
Si necesita
sudodepende de cómo instaló Node.js / io.js y si ha cambiado los permisos más tarde ; si obtiene un errorEACCES, intente de nuevo consudo.El
-gasegura la instalación global y se necesita para ponerflsen$PATHsu sistema.
Instalación manual
- Descarga este script
bashcomofls. - 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).