Existe uma maneira de catar arquivos conforme eles são criados? [duplicado]

4

Ao contrário da resposta a esta pergunta ( Can a script bash ser ligado a um arquivo? ) Eu quero ser capaz de ver o conteúdo de arquivos que ainda não foram criados como ou depois de serem criados . Eu não sei quando eles serão criados ou o que eles serão nomeados. Essa solução é para um arquivo específico e, na verdade, menciona no título da questão, criando um "gancho" para um arquivo específico. Minha pergunta é diferente porque eu não quero enganchar nada, e o que eu quero não é específico para um arquivo em particular. O título da minha pergunta especifica "... como eles são criados", o que deve ser um indício de que os arquivos nos quais estou interessado ainda não existem.

Eu tenho um aplicativo que os usuários usam para enviar informações de um site. Meu código cria arquivos de saída quando o usuário termina. Eu quero poder ver o conteúdo desses arquivos à medida que eles são criados, da mesma forma que o tail -f funciona, mas não sei com antecedência quais serão os nomes dos arquivos.

Existe uma maneira de criar arquivos de cat como eles são criados ou eu teria que de alguma forma criar um loop infinito que usa find com o -newermt flag

Algo como isso é o melhor que posso fazer até agora:

#!/bin/bash
# news.sh

while true
do
  d=$(date +"%T Today")
  sleep 10
  find . -newermt "$d" -exec head {} +
done

Para esclarecimento, não preciso necessariamente seguir os arquivos. Uma vez que eles são criados e fechados, eles não serão reabertos. Os arquivos existentes nunca serão alterados e receberão um novo horário de modificação, e por isso não estou interessado neles.

    
por David Wilkins 26.02.2014 / 20:09

1 resposta

2

Se no Linux, algo assim deveria fazer o que você está procurando:

inotifywait -m -e close_write --format %w%f -r /watch/dir |
  while IFS= read -r file
  do
    cat < "$file"
  done
    
por 26.02.2014 / 20:23