Como a opção --exclude
age apenas em nomes de arquivos, não há uma maneira direta de fazê-lo. Você pode tentar usar maneiras como find
para imprimir o nome de todos os diretórios:
inotifywait --exclude "echo -n (;$(find . -maxdepth 1 -mindepth 1 -type d -printf '%P|');echo )" .
Observe que não especifiquei -r
, pois isso fará com que os subdiretórios recém-criados sejam monitorados também.
Isso pode quebrar alguns caracteres especiais.
Você também pode tentar:
find . -maxdepth 1 -mindepth 1 -type d -printf '@%P' > list_of_directories
inotifywait --fromfile list_of_directories .
inotifywait
excluirá todos os arquivos ou pastas em list_of_directories
, que começam com @
(todos eles).
Se você estiver usando inotifywait
com a opção recursiva, deixe find
listar todos os subdiretórios aninhados removendo a restrição -maxdepth
(também se aplica ao primeiro comando):
find . -mindepth 1 -type d -printf '@%P' > list_of_directories
inotifywait --fromfile list_of_directories . -r
O -mindepth
é retido para impedir que find
corresponda a .
e, portanto, exclua também o diretório atual.