首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从inotifywait中排除目录

从inotifywait中排除目录
EN

Ask Ubuntu用户
提问于 2014-11-02 15:25:48
回答 3查看 10.8K关注 0票数 5

执行inotifywait来监视目录,并试图排除所有子目录,同时不排除文件。

代码语言:javascript
复制
inotifywait -r -q --exclude <pattern> dir/

<pattern>里放什么?inotifywait手册指定:

代码语言:javascript
复制
--exclude <pattern>
Do not process any events whose filename matches the specified POSIX extended regular expression, case sensitive.

-type中没有像find那样的标志。我尝试过(^/),但这似乎排除了一切。

帮助感激。

EN

回答 3

Ask Ubuntu用户

回答已采纳

发布于 2014-11-03 19:50:36

因为--exclude选项只对文件名起作用,所以没有直接的方法。您可以尝试使用find打印所有目录的名称这样的周全方式:

代码语言:javascript
复制
inotifywait --exclude "echo -n (;$(find . -maxdepth 1 -mindepth 1 -type d -printf '%P|');echo )" .

注意,我没有指定-r,因为这也会导致新创建的子目录被监视。

这可能会打破一些特殊的字符。

你也可以尝试:

代码语言:javascript
复制
find . -maxdepth 1 -mindepth 1 -type d -printf '@%P\n' > list_of_directories
inotifywait --fromfile list_of_directories .

inotifywait将排除以@开头的list_of_directories中的任何文件或文件夹(所有这些文件或文件夹都会)。

如果您使用的是inotifywait和递归选项,那么通过删除-maxdepth限制(也适用于第一个命令),让find列出所有嵌套的子目录:

代码语言:javascript
复制
find . -mindepth 1 -type d -printf '@%P\n' > list_of_directories
inotifywait --fromfile list_of_directories . -r

保留-mindepth以防止find匹配.,从而也排除当前目录。

票数 6
EN

Ask Ubuntu用户

发布于 2015-07-11 02:51:58

只需使用--exclude '/\..+'。这将忽略以点开始的所有文件。

( .+部件使其不排除基本文件夹)。

票数 5
EN

Ask Ubuntu用户

发布于 2014-11-02 17:54:28

inotifywait只检查子目录,因为参数-r

在没有该参数的情况下调用它,它将不会监视子目录。

票数 4
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/544733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档