GNU/Linux >> Tutoriales Linux >  >> Linux

¿Script para monitorear la carpeta en busca de nuevos archivos?

¿Cómo puedo detectar inmediatamente cuando se agregan nuevos archivos a una carpeta dentro de un script bash? Me gustaría que la secuencia de comandos procese los archivos tan pronto como se creen en la carpeta. ¿Hay algún método además de programar un trabajo cron que busque nuevos archivos cada minuto más o menos?

Respuesta aceptada:

Debería considerar usar inotifywait , como ejemplo:

inotifywait -m /path -e create -e moved_to |
    while read dir action file; do
        echo "The file '$file' appeared in directory '$dir' via '$action'"
        # do something with the file
    done

En Ubuntu inotifywait es proporcionado por inotify-tools paquete. A partir de la versión 3.13 (actual en Ubuntu 12.04) inotifywait incluirá el nombre del archivo sin la opción -f. Las versiones anteriores pueden necesitar ser forzadas. Lo que es importante tener en cuenta es que el -e opción para inotifywait es la mejor manera de filtrar eventos. Además, su read El comando puede asignar la salida posicional en múltiples variables que puede elegir usar o ignorar. No es necesario usar grep/sed/awk para preprocesar la salida.


Linux
  1. ¿Usando Inotify para monitorear el acceso a un archivo?

  2. ¿Clonar programáticamente /etc/skel para nuevos usuarios?

  3. Cómo buscar archivos usando expresiones regulares en el script de shell de Linux

  4. Detecte continuamente nuevos archivos con inotify-tools dentro de múltiples directorios recursivamente

  5. ¿Cómo fuerzo permisos específicos para nuevos archivos/carpetas en el servidor de archivos de Linux?

Comando ls en Linux para listar archivos

8 comandos fundamentales de administración de archivos de Linux para nuevos usuarios

Script de transliteración para shell de linux

¿Monitor de ancho de banda para Mac OS X?

secuencia de comandos para monitorear nuevos archivos en una carpeta compartida (host de Windows, invitado de Linux)

¿Cómo configurar los permisos de Linux para la carpeta WWW?