Existe algum comando interno do Linux para exibir o conteúdo de um diretório em tempo real? Semelhante ao comando "tail -f file_name" que exibe o conteúdo de um arquivo em tempo real.
Responder1
você pode fazer isso usando watch
. Não é totalmente em tempo real, mas é próximo o suficiente (até um décimo de segundo):
watch -n0.1 ls
do manual:
-n, --interval seconds
Specify update interval. The command will not allow quicker than 0.1 second interval, in which the smaller values are converted.
Responder2
Eu escrevi isso, espero que seja disso que você precisava. Não é um built-in Linux command
, mas usa apenas programas comuns presentes na maioria das caixas UNIX.
Ajuste sleep
o tempo conforme necessário. Eu usaria um valor de pelo menos 2 segundos. Use cmd="ls"
para estrutura não recursiva ou cmd="find DIRNAME"
para pesquisar recursivamente. Observe que no último caso, você receberá um DIRNAME/
prefixo para todos os arquivos e diretórios.
echo "" | awk '{while ( 1 ) {cmd="find ."; delete b;c=0; while ( ( cmd | getline result ) > 0 ) {test=1;c++;n=0;for (i in a) {n++;if (a[i]==result) {b[c]=i; test=0; break;}} if (test) {n++;a[n]=result;b[c]=n;print "##NEW## "result }} close (cmd); for (i in a) {test=1;for (j in b) {if (b[j]==i) {test=0;break}} if (test) {print "##DELETED## "a[i]; delete a[i]}} system("sleep 5") } }'
Responder3
Isso é tão simples depois que eu sei disso.
watch -d dir_name
Responder4
Você pode usar inotifytools
e seus utilitários de linha de comando.
Você pode usar inotify
para monitorar o diretório e retornará eventos para o próprio diretório e para arquivos dentro do diretório.
Outra ferramenta que pode ser utilizada éinotifywatch
:
sudo inotifywatch -v -r /foo
Você pode adicionar -r
for para monitorar todos os subdiretórios recursivamente. Contudo esta soluçãonão detecta alterações em arquivos recém-criados.
Então outra solução é usar inotifywait
:
inotifywait -m --format "%f" /foo
Aqui está outro exemplo de exibição do conteúdo de todos test*
os arquivos recém-criados em /tmp
:
inotifywait -m --format "%f" /tmp | grep --line-buffered ^test | xargs -L1 -I% sudo cat /tmp/% 2> /dev/null