Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/07/2012, 11:24
Avatar de Escoffie
Escoffie
 
Fecha de Ingreso: abril-2003
Ubicación: Mérida, Yucatán
Mensajes: 242
Antigüedad: 21 años
Puntos: 9
Mover archivos y actualizar ruta reeplazando con expresiones regulares

Estimados:

Es más una duda de expresiones regulares que de MySQL en sí. Trataré de ser lo más claro posible:

Descripción del problema:

En un CMS, mi cliente puede subir archivos e imágenes para vincularlos usando CKEditor y KCFinder, pero lamentablemente al cabo de los años, depositó centenares de archivos en la raíz de la carpeta donde se suben, haciendo que cada vez que se abra el KCFinder se tarde varios minutos en generar la lista, y a veces hasta causa un error 508 (Resource Limit Reached).

Por otro lado, hay otros cientos de archivos que sí están debidamente ubicados en carpetas.

Lo que quiero hacer es mover todos los archivos que estén en el directorio de subida, pero fuera de cualquier subdirectorio a una carpeta llamada, por ejemplo, "repositorio", pero sin mover las demás carpetas ya existentes. Esto es muy fácil de hacer, evidentemente.

La segunda parte sería actualizar vía MySQL todas las filas de una tabla llamada "secciones" donde en el campo "contenido" haya un MATCH de /file/archivo.ext para reescribirlo como /file/repositorio/archivo.ext pero que no afecte a archivos que estén en /file/carpeta-equis/archivo.ext o en /file/carpeta-ye/archivo.ext

Es un sitio enorme, y lo tengo que hacer bien y a la primera o mi cliente se infarta. Lamentablemente soy primerizo en expresiones regulares.

Como último recurso he pensado en mover todo a un subdirectorio y hacer un simple REPLACE, pero preferiría sólo mover los que estén en la raíz.

No tengo problema con la consulta, sólo con la expresión regular.

Espero haberme explicado. Cualquier ayuda será bien recibida.