GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Skript zum Überwachen des Ordners auf neue Dateien?

Wie kann ich sofort erkennen, wenn neue Dateien zu einem Ordner innerhalb eines Bash-Skripts hinzugefügt werden? Ich möchte, dass das Skript Dateien verarbeitet, sobald sie im Ordner erstellt werden. Gibt es andere Methoden außer dem Planen eines Cron-Jobs, der etwa jede Minute nach neuen Dateien sucht?

Akzeptierte Antwort:

Sie sollten die Verwendung von inotifywait in Betracht ziehen , als Beispiel:

inotifywait -m /path -e create -e moved_to |
    while read dir action file; do
        echo "The file '$file' appeared in directory '$dir' via '$action'"
        # do something with the file
    done

Unter Ubuntu inotifywait wird von den inotify-tools bereitgestellt Paket. Ab Version 3.13 (aktuell in Ubuntu 12.04) inotifywait enthält den Dateinamen ohne die Option -f. Ältere Versionen müssen möglicherweise erzwungen werden. Wichtig ist, dass das -e Option zu inotifywait ist die beste Methode zum Filtern von Ereignissen. Auch Ihr read Der Befehl kann die Positionsausgabe mehreren Variablen zuweisen, die Sie verwenden oder ignorieren können. Es besteht keine Notwendigkeit, grep/sed/awk zu verwenden, um die Ausgabe vorzuverarbeiten.


Linux
  1. Pseudodateien für temporäre Daten?

  2. Alle Dateien in einem Ordner drucken?

  3. /etc/skel für neue Benutzer programmgesteuert klonen?

  4. Erstellen Sie einen eigenen Ordner für alle Zip-Dateien in einem Verzeichnis und extrahieren Sie Zip-Dateien

  5. Erkennen Sie kontinuierlich neue Dateien mit inotify-Tools in mehreren Verzeichnissen rekursiv

ls-Befehl in Linux zum Auflisten von Dateien

8 grundlegende Linux-Dateiverwaltungsbefehle für neue Benutzer

Shell/Bash-Verknüpfung zum Massenumbenennen von Dateien in einem Ordner

Transliterationsskript für die Linux-Shell

Bandbreitenmonitor für Mac OS X?

Wie erzwinge ich bestimmte Berechtigungen für neue Dateien/Ordner auf dem Linux-Dateiserver?