
Ich verwende inotifywait in einem Skript und frage mich, ob es eine Möglichkeit gibt, versteckte Dateien von der Überwachung auszuschließen?
Ich kann das Regex-Muster zum Ausschließen versteckter Dateien scheinbar nicht bestimmen.
Antwort1
Ich nehme an, Sie meinen Dateinamen, die mit einem Punkt ( .
) beginnen. Diese können Sie ignorieren. Das Problem dabei inotifywait --exclude
ist, dass das Muster mit dem vollständigen Pfad der Datei übereinstimmt, also müssen Sie das berücksichtigen.
Wenn Sie also inotifywait
die Verzeichnisse foo
und bar
zum Beobachten angeben, werden die Muster mit Dateinamen wie foo/something
, abgeglichen bar/somethingelse
. Wie bei regulären Ausdrücken üblich, müssen Sie den Punkt maskieren.
Dies sollte auf alle Erstellungen im aktuellen Verzeichnis achten, mit Ausnahme von Dotfiles (es ist ein regulärer Ausdruck, also müssen wir die Punkte maskieren):
inotifywait -ecreate -m --exclude '^\./\.' .
Oder, weniger spezifisch, schließen Sie Dotfiles in allen Verzeichnissen aus, indem Sie nach der Kombination aus Schrägstrich und Punkt suchen:
inotifywait -ecreate -m --exclude '/\.' foo bar
Dies funktioniert natürlich nicht, wenn Sie ein Verzeichnis mit einem führenden Punkt an einer beliebigen Stelle des Pfads beobachten. Es wird mit allem in diesem Pfad abgeglichen.