当修改(即创建新文件或删除文件)目录的内容时,列出或更新为文本文件

当修改(即创建新文件或删除文件)目录的内容时,列出或更新为文本文件

我使用 Linux Mint,我想要一个文本文件来反映目录中文件的变化,它应该包含目录中存在的文件的名称并自动添加新创建的文件。我参考了一些链接,它说一个好方法是使用inotify-tools。我确实查了一下,并想出了这个 bash 脚本。

#!/bin/sh
while inotifywait -qqe modify path-of-directory ; do 
ls > path-of-text-file;
done

但它似乎不起作用,请指导我如何去做,如果我只将此脚本添加到启动应用程序列表中以使其始终运行就足够了,还是我应该使用crontab

答案1

本手册modify当文件被写入时触发的状态。您可能想要监视createdeletemove事件。

查看对类似问题的更详细的答案nohup那里提到了命令。另一个有用的命令可能是disown


我认为循环inotifywait可能会错过在执行期间发生的事件(因为此时ls没有运行)。有和选项,它们应该不会错过任何东西。这种方法应该更可靠一些:inotifywait-m-d

inotifywait -me create,delete,move path-of-directory | while read a ; do ls > path-of-text-file; done

现在inotifywait -m始终有效,并且每捕获一个事件输出一行文本。然后每行都会导致ls运行。


另一个解决方案是iwatch及其守护进程。当然,设置守护进程需要 root 权限。阅读我对另一个问题的回答并根据您的需要进行调整。

此外你可能还感兴趣LoggedFS - 使用 FUSE 进行文件系统监控

相关内容