Gibt es einen integrierten Linux-Befehl, um den Inhalt eines Verzeichnisses in Echtzeit anzuzeigen? Ähnlich dem Befehl „tail -f file_name“, der den Inhalt einer Datei in Echtzeit anzeigt.
Antwort1
Sie können dies mit tun watch
. Es ist nicht vollständig in Echtzeit, aber nahe genug dran (bis auf eine Zehntelsekunde):
watch -n0.1 ls
aus dem Handbuch:
-n, --interval seconds
Specify update interval. The command will not allow quicker than 0.1 second interval, in which the smaller values are converted.
Antwort2
Ich habe das geschrieben und hoffe, dass es das ist, was Sie brauchten. Es ist kein built-in Linux command
, aber es verwendet nur gängige Programme, die auf den meisten UNIX-Boxen vorhanden sind.
Passen Sie sleep
die Zeit nach Bedarf an. Ich würde einen Wert von mindestens 2 Sekunden verwenden. Verwenden Sie es cmd="ls"
für nicht rekursive Strukturen oder für rekursive Suchen. Beachten Sie, dass Sie im letzten Fall ein Präfix für alle Dateien und Verzeichnisse cmd="find DIRNAME"
erhalten .DIRNAME/
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") } }'
Antwort3
Das ist so einfach, nachdem ich es weiß.
watch -d dir_name
Antwort4
Sie können inotifytools
die Befehlszeilenprogramme verwenden.
Sie können es inotify
zum Überwachen von Verzeichnissen verwenden. Es werden Ereignisse für das Verzeichnis selbst und für Dateien im Verzeichnis zurückgegeben.
Ein weiteres Werkzeug, das verwendet werden kann, istinotifywatch
:
sudo inotifywatch -v -r /foo
Sie können -r
for hinzufügen, um alle Unterverzeichnisse rekursiv zu überwachen. Diese Lösungerkennt keine Änderungen an neu erstellten Dateien.
Eine andere Lösung besteht darin, Folgendes zu verwenden inotifywait
:
inotifywait -m --format "%f" /foo
Hier ist ein weiteres Beispiel für die Anzeige des Inhalts aller neu erstellten test*
Dateien in /tmp
:
inotifywait -m --format "%f" /tmp | grep --line-buffered ^test | xargs -L1 -I% sudo cat /tmp/% 2> /dev/null