2010-01-22 19 views
6

Tengo un programa que requiere la ruta a varios archivos. Los archivos viven en diferentes carpetas y se actualizan constantemente, a intervalos irregulares.Enlace simbólico al archivo más reciente en una carpeta

Cuando se actualizan los archivos, cambiar el nombre, por lo que, por ejemplo, en la carpeta dir1 tengo fv01 y fv02. Más tarde, el día en que alguien agrega fv02_v1; el día después de que alguien agregue fv03 y así sucesivamente. En otras palabras, siempre tengo un archivo actualizado pero con un nombre diferente.

Quiero crear un enlace simbólico en mi carpeta "ejecutar" a estos archivos, de modo que dicho enlace siempre apunte al último archivo creado.

Puedo hacer esto en Python o Bash, pero me preguntaba qué hay, ya que este no es un problema poco común.

¿Cómo lo harías?

Gracias.

Juan

PS. Mi sistema operativo es Linux. Actualmente tengo un daemon simple (Python) que se ve de vez en cuando (actualiza cada minuto) para el último archivo. Parece una especie de exceso para mí.

+1

Me pregunto si esto no debería ser más una pregunta de error del servidor (http://serverfault.com/). – Omnifarious

+0

El OP no busca la sintaxis del comando. El OP está buscando una forma más simple o más elegante para resolver el problema que escribir un script de Python o Bash que haga el 'ln' periódicamente. – Omnifarious

+0

Él quiere hacerlo en bash o python. Me parece una pregunta de programación. – Duck

Respuesta

3

A menos que haya algún motivo convincente que haya dejado sin especificar (por ejemplo, miles de archivos en el directorio) simplemente hágalo de la manera en que sugiera con un script ordenar los archivos por fecha de modificación. No hay un método secreto del que sea consciente.

Puede escribir un daemon usando inotify para supervisar sus directorios e inmediatamente establecer sus enlaces, pero eso parece exagerado.

Editar: Acabo de ver su edición. Como ya tienes el daemon, inotify podría no ser una mala idea. Sería algo más eficiente que consultar constantemente, ya que el sistema operativo le dirá cuándo ha cambiado algo en sus directorios.

No conozco python lo suficiente como para indicarle algo específico, pero debe existir un contenedor para inotify.

+0

Gracias, pato. Finalmente no pude usar 'inotify' para las razones de la versión' libc', pero me pusiste en una buena forma de proporcionar una solución mucho más general cuando finalmente nos actualizamos. Solo para el registro, hay un módulo de inotify de Python. ¡Gracias de nuevo! (+1 y aceptado) – Escualo

Cuestiones relacionadas