Estoy tratando de buscar todos los XML
archivos en un directorio particular y todos los subdirectorios (recursivamente) dentro de él.
ls -R *.xml
solo enumera archivos en el directorio actual. Estoy bastante seguro, las subcarpetas tienen varios .xml
archivos, pero ninguno aparece.
¿Es esto un problema de configuración?
ls -R | grep .xml
Respuestas:
Intenta usar Buscar
fuente
find
másls -R
?find
ygrep
, cuandofind
puede filtrar usando expresiones regulares y globos, y no usarfind
'sy-print0
grep'-z
cuando 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
.php
archivos en el directorio actual. Pero solo devolvió.php
archivos en el directorio actual, no buscó recursivamente en subdirectorios. Es por eso que pregunto si elfind
comando busca de forma recursiva o no.find
comando 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:
ls
no tiene opciones para filtrar la salida. Para eso necesitarías usar tubería. Esto pasa la salida dels
agrep
, que luego los filtra para mostrar solo los.xml
archivos.fuente
ls
?golpetazo
Usando la
globstar
opción de shell, podemos hacer uso del engrosamiento recursivo./**/*
Perl
Perl tiene un módulo
Find
que 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 delos
mó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
find
para el recorrido recursivo, y esa es la herramienta de referencia para el trabajo. Lo que sí necesita mencionar es el hecho de quefind
tiene varios interruptores de línea de comandos, como-printf
imprimir la salida en el formato deseado,-type f
buscar solo archivos regulares,-inum
buscar por número de inodo,-mtime
buscar por fecha de modificación,-exec <command> {} \;
ejecutar un comando particular para procesar el archivo con el archivo de paso como argumento (donde{}
es elfind
marcador de posición estándar para el archivo actual), y muchos otros, así que lea la página de manual parafind
.fuente