GNU/Linux >> Linux Esercitazione >  >> Linux

Script per monitorare la cartella per i nuovi file?

Come posso rilevare immediatamente quando nuovi file vengono aggiunti a una cartella all'interno di uno script bash? Vorrei che lo script elabori i file non appena vengono creati nella cartella. Esistono metodi oltre alla pianificazione di un processo cron che controlla la presenza di nuovi file ogni minuto circa?

Risposta accettata:

Dovresti considerare l'utilizzo di inotifywait , ad esempio:

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

In Ubuntu inotifywait è fornito da inotify-tools pacchetto. A partire dalla versione 3.13 (attuale in Ubuntu 12.04) inotifywait includerà il nome del file senza l'opzione -f. Potrebbe essere necessario forzare le versioni precedenti. Ciò che è importante notare è che -e opzione per inotifywait è il modo migliore per filtrare gli eventi. Inoltre, il tuo read comando può assegnare l'output posizionale a più variabili che puoi scegliere di utilizzare o ignorare. Non è necessario utilizzare grep/sed/awk per preelaborare l'output.


Linux
  1. Usare Innotify per monitorare l'accesso a un file?

  2. Come cercare i file usando regex nello script della shell linux

  3. Scorciatoia Shell/Bash per la ridenominazione in blocco dei file in una cartella

  4. Rileva continuamente nuovi file con inotify-tools all'interno di più directory in modo ricorsivo

  5. script per monitorare i nuovi file in una cartella condivisa (host Windows, guest Linux)

Comando ls in Linux per elencare i file

8 comandi fondamentali di gestione dei file Linux per i nuovi utenti

Crea una cartella dedicata per ogni file zip in una directory ed estrai i file zip

Script di traslitterazione per shell linux

Monitor della larghezza di banda per Mac OS X?

Come posso forzare autorizzazioni specifiche per nuovi file/cartelle sul file server Linux?