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
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.