Como posso fazer o equivalente a tail -f com ls? [duplicado]

25

Eu gostaria de monitorar os arquivos que estão sendo baixados para um diretório em tempo real na tela no bash.

Existe uma maneira fácil no Linux de fazer o equivalente a tail -f , mas em um diretório, talvez usando ls?

    
por T. Brian Jones 11.09.2012 / 03:33

3 respostas

40

Use o comando "watch":

watch ls

Isso executará o comando "ls" a cada 2 segundos.

    
por 11.09.2012 / 05:59
7

watch é definitivamente a melhor resposta se você a tiver. Mas para completar, você pode simular algo grosseiramente similar com um simples script de shell:

while (true)
do
     date
     ls -lrt | tail -n 10
     sleep 2
     clear
done

Outra maneira seria usar diff . Este também indicará se os arquivos foram removidos que costumavam estar presentes. Uma vantagem é que ele não limpa o terminal, portanto, você pode ver o registro completo de todas as alterações rolando para cima. Uma desvantagem é que ele cria dois arquivos temporários para gerenciar o raciocínio de mudança de estado.

ls1="/tmp/listing1.dat"
ls2="/tmp/listing2.dat"
ls -lrt > ${ls1}
ls -lrt > ${ls2}

while (true)
do
     diff ${ls1} ${ls2} | grep '[<>]'
     sleep 2
     cp ${ls2} ${ls1}
     ls -lrt > ${ls2}
done
    
por 11.09.2012 / 07:56
4

Confira inotifywait ,

por exemplo, para monitorar a pasta abc , você poderia fazer:

while inotifywait -e close_write abc; do
   # do 'ls' when abc changed
   ls abc
done
    
por 11.09.2012 / 04:32

Tags