Existe algum comando embutido do Linux para exibir o conteúdo de um diretório em tempo real?

7

Existe algum comando embutido do Linux para exibir o conteúdo de um diretório em tempo real? Similar ao comando "tail -f file_name" que exibe o conteúdo de um arquivo em tempo real.

    
por Goku__ 12.08.2014 / 17:23

4 respostas

5

você pode fazer isso usando watch . Não é completamente em tempo real, mas perto 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.
    
por 12.08.2014 / 17:31
2

Eu escrevi isso, espero que isso seja o que você precisava. Não é um built-in Linux command , mas usa apenas programas comuns presentes na maioria das caixas UNIX.

Ajuste sleep 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ê obterá um prefixo DIRNAME/ 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") } }'
    
por 12.08.2014 / 18:38
1

Isso é tão simples depois que eu sei.

watch -d dir_name
    
por 20.05.2015 / 19:20
0

Você pode usar inotifytools e seus utilitários de linha de comando.

Você pode usar inotify para monitorar o diretório e ele retornará eventos para o próprio diretório e para os arquivos dentro do diretório.

Outra ferramenta que pode ser usada é inotifywatch :

sudo inotifywatch -v -r /foo

Você pode adicionar -r para observar todos os subdiretórios recursivamente. No entanto, essa solução nã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 de conteúdo de todos os arquivos test* recém-criados em /tmp :

inotifywait -m --format "%f" /tmp | grep --line-buffered ^test | xargs -L1 -I% sudo cat /tmp/% 2> /dev/null
    
por 20.05.2015 / 22:39

Tags