sintaxis - listar archivos por tamaño linux
Coincidir todos los archivos en todos los directorios anidados con shell globbing (6)
En Bash 4, con shopt -s globstar
, y zsh puedes usar **/*
que incluirá todo excepto los archivos ocultos. Puede hacer shopt -s dotglob
en Bash 4 o setopt dotglob
en zsh para hacer que se incluyan archivos ocultos.
En ksh, set -o globstar
habilita. No creo que haya una manera de incluir archivos de puntos implícitamente, pero creo que **/{.[^.],}*
Funciona.
¿Hay alguna forma de usar shell Globbing para identificar directorios anidados?
así que si tengo dir / dir1 / dir2 / dir3 / dir4 / dir5 / ... y tengo archivos debajo de todos ellos, ¿cuál es el patrón de globbing equivalente para que coincida con todos los archivos de todos los directorios, similar a - por ejemplo - ls -R
Específicamente sobre git (gitignore, gitattributes y comandos que toman nombres de archivos): si el patrón no contiene una barra, los comodines *
coincidirán en profundidad. Si contiene una barra, git llamará a fnmatch con el indicador FNM_PATHNAME
y los comodines simples no coincidirán con las barras. **
para emparejar profundo no es compatible. Tal vez este tipo de comparación profunda podría ser más ampliamente compatible con un nuevo indicador FNM_STARSTAR
y una implementación en glibc, gnulib y otros lugares.
No hay manera de hacer esto con Vanilla Bash, sin embargo, la mayoría de los comandos aceptan una opción -R
o --recursive
para decirles que desciendan a los directorios.
Si simplemente desea enumerar todos los archivos ubicados en cualquier lugar dentro de un directorio o sus subdirectorios, puede usar find .
Para buscar recursivamente archivos ( -type f
) con un directorio dado:
find <directory> -type f
Puedes intentar:
**/*.*
Sin embargo, ignorará los archivos ocultos (como los archivos .git
). A veces es un salvavidas.
Lea más en: ¿Qué se expande recursivamente a todos los archivos en el directorio actual? en SO
Puedes usar el árbol, se mostrarán todas las carpetas recursivamente.
tree <path>
Si desea actuar sobre todos los archivos devueltos por find, en lugar de simplemente enumerarlos, puede canalizarlos a xargs:
find <directory> -type f | xargs ls
Pero esto es solo para comandos que no tienen una bandera recursiva.