Gibt es einen integrierten Linux-Befehl, um den Inhalt eines Verzeichnisses in Echtzeit anzuzeigen?

Gibt es einen integrierten Linux-Befehl, um den Inhalt eines Verzeichnisses in Echtzeit anzuzeigen?

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 sleepdie 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 inotifytoolsdie Befehlszeilenprogramme verwenden.

Sie können es inotifyzum Ü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 -rfor 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

verwandte Informationen