在求助于一个模糊的问题之前,我已经尝试解决这个问题几天了。我知道诸如 inotify 之类的工具,但是作为作业的一部分,我不允许使用为您做这件事的工具。我使用 watch -n 5 -d ls -l
来直观地显示更改。然而,这不是我要找的。当目录中的文件被删除、创建或重命名时,我想将更改打印到终端。我不是在寻找一个彻底的解决方案,只是一些关于我应该如何尝试解决这个问题的建议。
最佳答案
完成此操作的最佳方法可能是使用 inodes目标目录中的文件作为跟踪更改的标识符。例如,您可以构建一个 hash table当您的脚本通过将 inode 存储为标识符并使用文件名作为键来启动时。一旦建立了初始表,程序将再次循环遍历目录和表,检查以下内容;
inode 消失了吗?如果是这样,则具有该受影响 inode 的标识符 == 的键已被删除 已删除。
标识符和 key 是否仍与目录匹配?如果没有,则文件已重命名。
- 最后,目录中是否出现了新的 inode?如果是,则已创建一个新文件,因此我们需要将其及其文件名添加到表中。
希望对您有所帮助。
关于linux - (Bash) 如何监控目录中的文件更改(创建、删除、重命名),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46796143/