- Instale o pacote
inotify-tools
em sua distribuição. - Use o comando
inotifywait
para criar uma pesquisa contínua no diretório desejado. Ex:inotifywait -m -r -e create /src_dir
. Esta ferramenta pode assistir a outros aspectos do sistema de arquivos (alterar atributos, fechar gravação, mover, deletar), então, vamos nos ater à coisa de criação de arquivos. -
Pré-visualize a notificação e continue a execução com este comando e execute-o com um usuário que tenha privilégios suficientes:
inotifywait -m -r -e create /src_dir | while read file; do mv /src_dir/*.xxx /dst_dir done
Explicação detalhada:
-
inotifywait
- Comando que usa a API inotify. rovides um mecanismo para monitorar eventos do sistema de arquivos.man inotify
para mais detalhes. -
-m
- Mantenhainotifywait
em execução após o primeiro evento ocorrer. -
-r
- é executado recursivamente. Remova isso se você não quiser esse comportamento. -
-e create
- Notifica em um determinado evento. O que estamos usando é criar. Omitir este parâmetro para monitorar todos os eventos conhecidos -
/src_dir
- Argumento do local que está sendo monitorado -
|
- Operador de tubulação. Redirecionar uma saída de comando para outra. -
/while (...) done
- Mova tudo chamado * .xxx de/src_dir
para um destino chamado/dst_dir
. O loop garantirá que esse movimento ocorrerá sempre que um evento for acionado pelo comandoinotifywait
.
Extraído dos mapas do homem:
-m, --monitor
Instead of exiting after receiving a single event, execute indefinitely.
The default behaviour is to exit after the first event occurs.
-e <event>, --event <event>
Listen for specific event(s) only. The events which can be listened for are
listed in the EVENTS section. This option can be speci‐fied more than once.
If omitted, all events are listened for.
-r, --recursive
Watch all subdirectories of any directories passed as arguments. Watches will be
set up recursively to an unlimited depth. Symbolic links are not traversed.
Newly created subdirectories will also be watched.
Espero que ajude:)