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 aplicarls
muchas opciones ;
tambiénfind
invariablemente encuentra elementos ocultos también , mientras que el comportamiento dels
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
.
- 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
+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 argumentosls
(ejecutefls --help
ofls --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 :
Si necesita
sudo
depende 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
-g
asegura la instalación global y se necesita para ponerfls
en$PATH
su sistema.
Instalación manual
- Descarga este script
bash
comofls
. - 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).