web-dev-qa-db-fra.com

Comment puis-je faire l'équivalent de la queue -f avec LS?

Dupliquer possible:
[.____] est-il possible de suivre une commande (exécuter à plusieurs reprises)? Comme on suivrait un fichier à l'aide de la queue -f?

Je souhaite surveiller les fichiers téléchargés sur un répertoire en temps réel à l'écran de Bash.

Y a-t-il un moyen simple de Linux de faire l'équivalent de tail -f Mais sur un répertoire, peut-être utiliser LS?

36
T. Brian Jones

watch est définitivement la meilleure réponse si vous l'avez. Mais pour la complétude, vous pouvez simuler quelque chose de grondement similaire à un seul bit de script shell:

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

Une autre façon pourrait utiliser diff. Celui-ci soulignera également si les fichiers sont supprimés qui étaient présents. Un avantage est qu'il n'efface pas le terminal, vous pouvez donc voir l'enregistrement complet de toutes les modifications en faisant défiler vers le haut. Un inconvénient est qu'il crée deux fichiers temporaires pour gérer le raisonnement de changement d'état.

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
8
ire_and_curses

Découvrez inotifywait,

e.g Pour surveiller le dossier abc, vous pourriez faire:

while inotifywait -e close_write abc; do
   # do `ls` when abc changed
   ls abc
done
5
daisy