Existe algum motivo específico para você estar usando:
| awk '($2=="CREATE"){print $3}' > ~/output.file
em vez de inotifywait
opções como --format
e --outfile
?
Se eu correr:
inotifywait -m --format '%f' -e create /home/don/folder/ --outfile /home/don/output.file
abra outra guia, cd
to ~/folder
e execute:
time seq -w 00001 50000 | parallel touch {}
real 1m44.841s
user 3m22.042s
sys 1m34.001s
(para obter mais de 500 arquivos por minuto) tudo funciona bem e output.file
contém todos os nomes dos arquivos 50000
que acabei de criar.
Quando o processo terminar de gravar os arquivos no disco, você pode anexá-los ao seu test.out
(supondo que você esteja sempre em ~/folder
):
xargs < /home/don/output.file cat >> final.file
Ou use read
se você quiser processar os arquivos à medida que eles são criados. Então, while em ~/folder
você pode executar:
inotifywait -m --format '%f' -e create ~/folder | while read file; do cat -- "$file" >> ~/test.out; done
Observe que, em inotifywait
stable, -m
e -t
não podem ser usados juntos. Suporte para o uso de as duas opções foram adicionadas recentemente, por isso, se você criar inotify-tools
de git
você deve ser capaz de usar monitor
com timeout
(para especificar quanto tempo tem que esperar por um evento a ocorrer antes de sair). Eu testei a versão git
no meu sistema (saia se nenhum evento create
ocorrer em 2 segundos) e ele funciona bem:
inotifywait -m -t 2 --format '%f' -e create ~/folder | while read file; do cat -- "$file" >> ~/test.out; done