no se si a alguien le sirva esto jajaja pero bueno. no tengo nada que hacer y me hice un script que tengo en la carpeta donde andan los historiales de sala para que funja como un buscador masivo. pide la palabra, frase o expresión regular (no e probado si funciona o no) y busca en todos los txt para luego crear un archivo temporal mostrando la línea de aparición, el archivo exacto y el número de línea. si alguien lo quiere hacer más robusto, chequear si funciona todo, joya. pasaré el código Python porque me da flojera subirlo a una nube, y también porque no lo voy a compilar, porque es en consola entonces... va.
import os
import re
import tempfile
def search_in_files():
# Solicitar al usuario la cadena a buscar
search_term = input("Introduce la palabra, frase o expresión regular a buscar: ")
search_pattern = re.compile(search_term, re.IGNORECASE)
# Obtener todos los archivos .txt en el directorio actual
files = [f for f in os.listdir() if f.endswith('.txt')]
# Ordenar archivos por fecha de creación, para procesar desde el más antiguo al más reciente
files.sort(key=lambda x: os.path.getmtime(x))
# Crear un archivo temporal para almacenar los resultados
temp_file = tempfile.NamedTemporaryFile(mode='w+', delete=False, encoding='utf-8')
# Buscar en cada archivo
for filename in files:
with open(filename, 'r', encoding='utf-8') as file:
lines = file.readlines()
# Contador para limitar las apariciones registradas
match_count = 0
# Revisar cada línea en el archivo
for line_number, line in enumerate(lines, start=1):
if search_pattern.search(line):
if match_count < 6: # Solo registrar hasta 6 apariciones
temp_file.write(f"{line.strip()} - {filename} (Línea {line_number})\n")
match_count += 1
if match_count == 3: # Detener después de las primeras 3 apariciones
break
# No cerrar el archivo temporal aquí para permitir su lectura
temp_file.close()
# Informar al usuario donde se guardaron los resultados y abrir el archivo para visualización
print(f"Resultados guardados temporalmente en: {temp_file.name}")
input("Presiona Enter después de revisar el archivo para finalizar el script.")
# Abrir el archivo temporal con el bloc de notas
os.system(f"notepad {temp_file.name}")
# Eliminar el archivo temporal al cerrar el bloc de notas
os.remove(temp_file.name)
Ejecutar el script
if __name__ == "__main__":
search_in_files()