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

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

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 sleepo 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 inotifytoolse seus utilitários de linha de comando.

Você pode usar inotifypara 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 -rfor 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

informação relacionada