¿Es posible cambiar automáticamente el nombre de un archivo cuando se coloca en un directorio específico?
Por ejemplo, tengo un directorio llamado "dir0". Muevo o copio un archivo llamado "archivo1" a "dir0". Luego, "archivo1" debería cambiar el nombre a "archivo1_ {marca de tiempo actual}"
linux
filesystems
Nick.h
fuente
fuente
Respuestas:
Por lo general, haría esto mediante programación al momento de crear o mover el archivo, pero es posible activar un script cada vez que se crea o mueve un archivo a una carpeta
incron
. Configure su archivo de tabulaciónincrontab -e
con una línea como esta, pero con sus rutas, por supuesto:Luego, en
/path/to/script
escribir una acción de cambio de nombre rápido. Tenga en cuenta que la secuencia de comandos también se llamará para el nuevo archivo que cree, por lo que debe probar si el archivo ya se ha nombrado correctamente o no. En este ejemplo, verifica si el archivo tiene un número de diez dígitos durante segundos desde la época como la última parte del nombre del archivo, y si no lo tiene, lo agrega:Editar: cuando escribí esto por primera vez, tenía poco tiempo y no podía encontrar la manera de hacer
bash
que el patrón coincida aquí. Gilles señaló cómo hacer esto sin invocar grep usando la coincidencia de ERE en bash:fuente
Creo que
inotify
es una herramienta que podría usarse en este caso. En Debian hay una herramientainoticoming
para ejecutar acciones en la creación de archivos:{}
será reemplazado con el nombre del archivo.El comando que proporcioné no está completo: causa un bucle porque cuando se cambie el nombre del archivo se reconocerá como nuevo, por lo que se volverá a
mv
editar y así sucesivamente. Para evitar esto, puede usar la--suffix
opción si sabe qué sufijo estará en el archivo antes de cambiar el nombre.fuente
inoticoming
. Por curiosidad, ¿cuándo sería mejor usar estoinocron
?inoticoming
es "similarincrond
, pero más liviana y no comenzó como un demonio predeterminado", por lo que creo que es solo otra solución con un enfoque ligeramente diferente. .. Creo queincron
es más popular - tengo problemas para encontrarinoticoming
la página de inicio de un paquete para Debian fuera ...inoticoming
solo en distribuciones basadas en Debian (en mi Gentoo no hay ebuild para ello). En la página que he publicado, hay dos paquetes:reprepro
y debajo de ellainoticoming
...Podrías tomar un script como este y ejecutarlo ... Lo dejaré como un ejercicio para que el lector agregue los bits adicionales para que comience como un servicio y evite que se ejecuten varias copias a la vez.
Y aquí está funcionando:
fuente
perl
puede hacer cualquier cosa, pero una secuencia de comandos persistente que se ejecuta en un bucle X-while while-true es definitivamente un truco cuando puede recibir notificaciones de eventos sobre escrituras de archivos y responder instantáneamente sin perder recursos el resto del tiempo.