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.