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.