每 10 秒监控多个目录中特定文件的创建情况

每 10 秒监控多个目录中特定文件的创建情况

操作系统:Ubuntu 22.04 LTS。
许多帖子涉及文件监控。特别是感兴趣并且基于inotifywait,但我不知道如何根据我的目的修改它。

客观的:在创建$HOME/{Documents/,Downloads/,Archive/}链接文件时监视它们。*.lnk每次我在 Wine 中使用 Word 创建、保存、打开文档或对文档执行任何操作时,都会创建这些文件。*.lnk只需几分钟即可创建数十个文件。这个问题快要死我了。

我愿意学习,但由于缺乏知识,无法将通用示例转化为我需要的内容。我知道如何在普通文件中运行脚本,但如果在这方面有什么特别的事情我应该知道,请告诉我。提前发送。

答案1

您需要使用终端将这个小脚本写入文件中。我假设您bash从一开始就在 Ubuntu 上使用shell。如果情况并非如此,请告诉我们。

$ touch notify_links
$ chmod u+x notify_links
$ cat notify_script
#!/usr/bin/env bash
inotifywait -mr -e moved_to,create "$HOME"/{Documents,Downloads,Archive} |
while read directory action file; do
    if [[ "$file" =~ .lnk$ ]]; then
        echo rm -f "$file"
    fi
done

运行这个脚本。为此,只需在notify_links终端中(在终端中)发出以下命令即可。

一旦对终端显示屏上显示的内容感到满意,请删除echo脚本行中的 :echo rm -f "$file"以仅保留rm -f "$file"

编辑1根据 @ilkkachu 的评论,以便专门监视三个目录/文件夹而不是完整的$HOME子树。

编辑2根据 @Paul_Pedant 的评论,为了在启动过程完成后每 10 秒自动运行一次,请编辑文件/etc/crontabcrontab -e包括:

 * * * * * $USER for i in $(seq 5); do /usr/bin/find $HOME -name "*.lnk" -delete; sleep 10; done

编辑3为了获得更快的结果和更少的资源使用,您将只想搜索您在 OP 中提到的目录。以下将搜索它们的子树:

 * * * * * $USER for i in $(seq 5); do /usr/bin/find "$HOME"/{Documents,Downloads,Archive} -name "*.lnk" -delete; sleep 10; done

为了防止find子树向下递归,添加以下选项-maxdepth 1 -name "*.lnk"find命令中。

相关内容