
Я использую inotifywait в скрипте и мне интересно, есть ли способ исключить скрытые файлы из наблюдения?
Похоже, я не могу определить шаблон регулярного выражения для исключения скрытых файлов.
решение1
Я предполагаю, что вы имеете в виду имена файлов, которые начинаются с точки ( .
), вы можете их игнорировать. Дело в inotifywait --exclude
том, что шаблон, по-видимому, сопоставляется с полным путем файла, так что вам нужно будет это учитывать.
Итак, если вы указываете inotifywait
каталоги foo
и bar
для просмотра, то шаблоны будут сопоставляться с именами файлов, например foo/something
, bar/somethingelse
. Как обычно в регулярных выражениях, вам нужно экранировать точку.
Это должно отслеживать все создания в текущем каталоге, за исключением dotfiles (это регулярное выражение, поэтому нам нужно экранировать точки):
inotifywait -ecreate -m --exclude '^\./\.' .
Или, если говорить менее конкретно, исключите файлы с точками во всех каталогах, выполнив поиск по комбинации слеша и точки:
inotifywait -ecreate -m --exclude '/\.' foo bar
Конечно, это не сработает, если вы просматриваете каталог, в какой-то части пути которого есть точка; будет найдено все содержимое этого пути.