Estoy tratando de buscar todos los XMLarchivos en un directorio particular y todos los subdirectorios (recursivamente) dentro de él.
ls -R *.xmlsolo enumera archivos en el directorio actual. Estoy bastante seguro, las subcarpetas tienen varios .xmlarchivos, pero ninguno aparece.
¿Es esto un problema de configuración?

ls -R | grep .xmlRespuestas:
Intenta usar Buscar
fuente
findmásls -R?findygrep, cuandofindpuede filtrar usando expresiones regulares y globos, y no usarfind'sy-print0grep'-zcuando necesita mezclar.Puedes hacerlo solo con find :
.es el directorio actual Si necesita buscar en otro directorio, reemplácelo.con la ruta del directorio.fuente
.phparchivos en el directorio actual. Pero solo devolvió.phparchivos en el directorio actual, no buscó recursivamente en subdirectorios. Es por eso que pregunto si elfindcomando busca de forma recursiva o no.findcomando busca de forma recursiva. Si no cita el parámetro, creo que su shell podría expandirse*, por lo que coincidirá con los archivos en el directorio actual.Prueba este comando:
lsno tiene opciones para filtrar la salida. Para eso necesitarías usar tubería. Esto pasa la salida delsagrep, que luego los filtra para mostrar solo los.xmlarchivos.fuente
ls?golpetazo
Usando la
globstaropción de shell, podemos hacer uso del engrosamiento recursivo./**/*Perl
Perl tiene un módulo
Findque permite el recorrido recursivo del árbol de directorios. Dentro de lafind()función especial , podemos definir una subrutina deseada y el directorio que queremos recorrer, en este ejemplo eso es.. La frase en este caso sería:Pitón
Si bien Perl tiene un módulo completo dedicado al recorrido recursivo del árbol, Python tiene una función ordenada
walk()que forma parte delosmódulo y devuelve repetidamente la tupla de la ruta superior, la lista de todos los subdirectorios y la lista de nombres de archivo. Podemos hacer lo siguiente:Esto podría ser mucho más ordenado como script:
encontrar
Se han mencionado otras respuestas
findpara el recorrido recursivo, y esa es la herramienta de referencia para el trabajo. Lo que sí necesita mencionar es el hecho de quefindtiene varios interruptores de línea de comandos, como-printfimprimir la salida en el formato deseado,-type fbuscar solo archivos regulares,-inumbuscar por número de inodo,-mtimebuscar por fecha de modificación,-exec <command> {} \;ejecutar un comando particular para procesar el archivo con el archivo de paso como argumento (donde{}es elfindmarcador de posición estándar para el archivo actual), y muchos otros, así que lea la página de manual parafind.fuente