Como mover um arquivo para outro diretório, assim que ele é criado, no linux? [duplicado]

0

Eu quero mover todo o arquivo * .xxx criado em um diretório para outro diretório. Mas, quero que, assim que os arquivos forem criados, eles sejam movidos para outro diretório. Por favor ajude. Agradecemos antecipadamente.

    
por NixMan 22.10.2014 / 13:17

1 resposta

3

  1. Instale o pacote inotify-tools em sua distribuição.
  2. 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.
  3. 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 - Mantenha inotifywait 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 comando inotifywait .

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:)

    
por 22.10.2014 / 13:42