Busque todos los archivos con una extensión .sql en carpetas y subcarpetas


17

Quiero buscar todos los archivos con la extensión .sql en carpetas y subcarpetas (recursivas).

¿Cómo puedo hacer esto?

Respuestas:


29

O...

find $directory_name -name \*.sql

Por ejemplo

find / -name \*.sql

O

find ~ \*.sql

(donde ~ equivale a / home / your_username /), o ...

find /usr/local/share/ \*.sql

Etcétera.


2

Ejecute esto en la línea de comando:

cd / && find | grep '\.sql$'

Cambie '/' al directorio que desea buscar.

El findcomando puede realizar la tarea sin grep (usando opciones adicionales), pero el uso anterior me parece más conveniente.

En orden, el comando anterior:

  1. Cambia el directorio actual al directorio raíz ( cd /)
  2. Enumera todos los archivos y directorios en y debajo del directorio actual ( find)
  3. Filtra los archivos y directorios para cualquier cosa que termine con '.sql' ( | grep '\.sql$')

gracias, puedes explicarlo? estás usando grep y pasando su salida para encontrar?
— Blankman

Viceversa, en realidad. Estoy usando find y pasando su salida a grep. Agregué una explicación más detallada arriba.
— Barbarrosa

¿funcionaría esto también en una Mac? Intenté 'encontrar | grep '\ .sql $' y generó la información de ayuda de uso.
— Blankman

find es una herramienta poderosa y realmente no necesita canalizar la salida a grep. Este es un buen enlace: content.hccfl.edu/pollock/unix/findcmd.htm
— Panther

1
findya tiene capacidades de filtro
— enzotib

1

Sé que esta es una publicación anterior, pero soy bastante nuevo en esto y he encontrado una manera fácil de encontrar todos los archivos de cierta extensión en un directorio y sus subdirectorios secundarios. Bueno, primero navegas hacia el y parent Directoryluego find . -name '*.sql'encontrarás todos los archivos con extensión .sql en los directorios y sus subdirectorios.

En mi caso, quería eliminar todos los archivos .xml en el directorio y sus subdirectorios, así que lo que hice más es que agregué eliminar como aquífind . -name '*.xml' | xargs rm

Espero que esto ayude a alguien :)


2
findentiende el -deletecomando. No hay necesidad de involucrarse rm. O puede usar el -execcomando para invocarlo directamente sin el desvío a través de una tubería y xargs.
— David Foerster

0
locate -br \\.sql$ | egrep '^/folder/path/'

Si no está instalado, instálelo previamente con:

sudo apt install mlocate

Esto requiere una mlocate.dbinstancia actualizada que no esté configurada fuera de la caja en Ubuntu (Blieve). Además, ¿por qué no simplemente locate '/folder/path/*.sql'?
— David Foerster

@DavidFoersterI Lo intenté como lo especificó, pero no funciona, supongo que regex in locatetiene una configuración diferente de la expresión regular utilizadaegrep
— Vzzarr

locatecoincide con expresiones globales como /folder/path/*.sql, no expresiones regulares.
— David Foerster

Lo sentimos, pero a partir de man locaterecibo -r, --regexp REGEXP - Search for a basic regexp REGEXPpor lo que supuse que era una expresión regular. De todos modos probé tu "expresión global" pero no funciona, lo siento
— Vzzarr

Lea al menos las primeras oraciones de la descripción antes de comenzar a seleccionar la opción de la sinposis: "Si --regexno se especifica, los PATTERNs pueden contener caracteres globulares". ( Fuente )
— David Foerster
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.