Sé **/*.ext
se expande a todos los archivos en todos los subdirectorios que coincidan con *.ext
, pero ¿qué es una expansión similar que incluye todos los archivos en el directorio actual también?¿Qué se expande a todos los archivos en el directorio actual recursivamente?
Respuesta
Esto funcionará en Bash 4:
ls -l {,**/}*.ext
Para que el pegote de doble asterisco al trabajo, la opción globstar
es necesario establecer (por defecto: activado):
shopt -s globstar
De man bash
:
globstar If set, the pattern ** used in a filename expansion con‐ text will match a files and zero or more directories and subdirectories. If the pattern is followed by a /, only directories and subdirectories match.
Probé Ubuntu y Cygwin, y 'globstar' está predeterminado' off' –
¡La mejor respuesta! pero creo que '**/*. ext' debería ser suficiente sin embargo. Además, no tendrá los archivos ocultos a menos que 'shopt -s dotglob'. –
My Centos 6 Bash 4.1.2 también se desactiva de forma predeterminada para la opción globstar. – toxalot
$ find . -type f
Eso listará todos los archivos en el directorio actual. A continuación, puede hacer algún otro comando en la salida usando -exec
$find . -type f -exec grep "foo" {} \;
Eso se grep cada archivo del hallazgo para la cadena "foo".
Esto imprimirá todos los archivos en el directorio actual y sus subdirectorios que terminan en '.ext'.
find . -name '*.ext' -print
Puede usar: **/*.*
para incluir todos los archivos recursivamente (habilitar por: shopt -s globstar
).
Por favor encuentre abajo la prueba de otras variaciones y cómo se comportan.
carpeta de pruebas con 3472 archivos de la carpeta VLC repositorio de pruebas:
(archivos totales de 3472 contaba según: find . -type f | wc -l
)
ls -1 **/*.*
- retornos 3338ls -1 {,**/}*.*
- devuelve 3341 (según lo propuesto por Dennis)ls -1 {,**/}*
- devuelve 8265ls -1 **/*
- retornos 7817, con excepción de los archivos ocultos (como propone Dennis)ls -1 **/{.[^.],}*
- retornos 7869 (según lo propuesto por Dennis)ls -1 {,**/}.?*
- Devuelve 15855ls -1 {,**/}.*
- devuelve 20321
Creo que el método más cercano para enumerar todos los archivos recursiv Ely es el primer ejemplo (**/*.*
) como por gniourf-gniourf comment (suponiendo que los archivos tienen las extensiones adecuadas, o utilizar el específico), como el segundo ejemplo da pocos más duplicados, como a continuación:
$ diff -u <(ls -1 {,**/}*.*) <(ls -1 **/*.*)
--- /dev/fd/63 2015-04-19 15:25:07.000000000 +0100
+++ /dev/fd/62 2015-04-19 15:25:07.000000000 +0100
@@ -1,6 +1,4 @@
COPYING.LIB
-COPYING.LIB
-Makefile.am
Makefile.am
@@ -45,7 +43,6 @@
compat/tdestroy.c
compat/vasprintf.c
configure.ac
-configure.ac
y el otro generar aún más duplicados.
para incluir archivos ocultos, utilice: shopt -s dotglob
(desactivar por shopt -u dotglob
). No se recomienda, porque puede afectar comandos como mv
o rm
y puede eliminar accidentalmente los archivos incorrectos.
En la terminal Mac y bash con globstar habilitado, encontré la solución anterior ('' '**/*. *' '') Informativa y funcionó mejor. La respuesta aceptada causó duplicados de elementos en el directorio superior. Mi patrón de trabajo era: '' '" $ {path} "**/*. *' '' – mummybot
- 1. Difiere un directorio recursivamente, Ignorando todos los archivos binarios:
- 2. Buscar todos los archivos editables en el directorio actual
- 3. CoffeeScript: compila todos los archivos .coffee en el directorio actual y en todos los subdirectorios
- 4. Comando para buscar todos los archivos privados de vista en el directorio actual de forma recursiva
- 5. Hacer ejecutables todos los archivos PHP (recursivamente)
- 6. ¿Cómo puedo encontrar todos los archivos * .js en el directorio recursivamente en Linux?
- 7. Copie todos los archivos en el directorio
- 8. Imprimir recursivamente todos los archivos de Vim
- 9. agregar recursivamente la extensión de archivo a todos los archivos
- 10. HDFS: ¿Cómo se enumeran los archivos recursivamente?
- 11. iterar recursivamente sobre todos los archivos en un directorio y sus subdirectorios en Qt
- 12. Cómo recursivamente enumerar todos los archivos en un directorio en C#?
- 13. lista LINUX recursivamente todos los archivos en un directorio incluyendo los archivos en directorios de enlaces simbólicos
- 14. Obtener rutas absolutas de todos los archivos en un directorio
- 15. ¿Cómo eliminar el directorio recursivamente?
- 16. Cómo recursivamente enumerar todos los archivos y directorios
- 17. Proceso por lotes todos los archivos en el directorio
- 18. TCL: buscar recursivamente subdirectorios para obtener todos los archivos .tcl
- 19. lista de PHP todos los archivos en el directorio
- 20. Java: ¿cómo obtener todos los subdires recursivamente?
- 21. Subversion: cómo eliminar todos los archivos .svn recursivamente?
- 22. Python-FTP descarga todos los archivos en el directorio
- 23. windows .bat file cómo enumerar recursivamente todos los archivos de tipo * .mp3
- 24. Cómo eliminar archivos recursivamente
- 25. gitignore todos los archivos de extensión en el directorio
- 26. LINUX: Enlace todos los archivos de uno a otro directorio
- 27. Lista de archivos recursivamente en Linux CLI con ruta relativa al directorio actual
- 28. Lectura de archivos Android.mk en subdirectores recursivamente
- 29. scp recursivo, excepto el directorio actual
- 30. ¿Cómo se muestran los archivos sin seguimiento solo en el directorio actual (ignorando los subdirectorios)?
¿qué tal encontrar? – Aif
Mi bash no maneja '**/*. Ext'. ¿Estás seguro de que funciona para ti? – tangens
@tangens Tienes que habilitar la opción 'globstar' según la respuesta de Dennis. – kenorb