09 febrero 2011

Script Python para buscar dentro de archivos

Una aplicación web en la que trabajé estaba compuesta por un maremágnum de archivos (php, inc, ...) que se actualizaba constantemente por todo el equipo y no podía tener acceso en local.

Por ello a la hora de buscar los archivos que usaban una función, etc, era una autentica tortura, así que desarrollé un script en Python para hacer búsquedas de texto en archivos dentro de un servidor linux.

#!/usr/bin/env python
import commands
import sys
"Busca in python"
numberParams=len(sys.argv)
if(numberParams>1):
    findTxt='find . -type f'
    if(numberParams>2):
        findTxt+='|egrep "'
        for i in range(len(sys.argv)):
            if(i>1):
                findTxt+=sys.argv[i]
                if(i+1<numberParams):
                    findTxt+='|'
        findTxt+='"'
    find=commands.getoutput(findTxt)
    for value in find.split('n'):
        value2=commands.getoutput('grep -nHi "'+sys.argv[1]+'" '+value)
        if value2!='':
            print value2
else:
    print "Please, busca.py 'searchString' [typeFile typeFile ...]"

La forma de usarlo es la siguiente:

python busca.py 'texto a buscar' [php inc html ...]

Por ejemplo, para buscar el texto include dentro de archivos php e inc en un directorio tecleamos lo siguiente:

python busca.py 'include' php inc

Vamos a explicarlo un poco mejor:
  • busca.py es el nombre que le he dado a mi script (se podría llamar de cualquier otra forma).
  • 'include' es la cadena de texto a buscar.
  • Después de la cadena de texto y separado por espacios ponemos todos los tipos de archivos en los que queremos buscar nuestra cadena de texto.
  • Busca en el directorio actual.
  • Si tenemos el archivo busca.py en otro directorio diferente al que queremos buscar, no situamos en el directorio a buscar y escribimos la ruta a busca.py, por ejemplo:
     
    python ~/busca.py 'include' php inc
    
Con Python tengo poca experiencia, así que todo el que vea fallos o mejoras en mi script serán bienvenidas.

Podéis descargaros el código en mi repositorio de git https://github.com/fjnavarro/Busca.py

Espero que os sirva.

No hay comentarios:

Publicar un comentario

# Seguidores

  • F.J.Navarro
  • Desarrollador Web
  • Desarrollador de Videojuegos
Licencia de Creative Commons
fjnavarro.es by Francisco José Navarro García is licensed under a Creative Commons Reconocimiento-CompartirIgual 3.0 Unported License .
Based on a work at www.fjnavarro.es.