列出 Linux 中最新修改或新创建的文件

列出 Linux 中最新修改或新创建的文件

如何列出 Linux 中已修改或新创建的文件或目录。这样我就可以触发另一个命令或 shell 脚本来执行另一个任务。例如。文件 a.txt 和 test.txt 被修改,我想使用 linux cmd 查找最后更改的文件,然后触发 restart.sh 脚本(比如说)来获取更改。

答案1

有多种方法可以实现此目的,但以下是 Python 中的示例:

#!/usr/bin/env python

import os
import glob
import time
import subprocess

if __name__ == '__main__':
    mtimes = dict()

    while True:
        for f in glob.glob('*.txt'):
            if f not in mtimes:
                mtimes[f] = os.path.getmtime(f)

            if mtimes[f] != os.path.getmtime(f):
                print("File {} was modified. Executing restart.sh.".format(f))
                mtimes[f] = os.path.getmtime(f)                
                output = subprocess.check_output('./restart.sh')
                print(output)

        time.sleep(1)

您可能需要根据您的环境进行调整:

  • glob.glob('*.txt')是您要监视的文件的搜索模式。
  • subprocess.check_output('./restart.sh')是你调用脚本的地方。它可能驻留在其他地方。
  • time.sleep(1)是检查之间的延迟(以秒为单位)。

答案2

我会选择inotifywait。他们查看创建、修改、删除、移动的系统调用,您可以在 shell 中编写脚本,检测到该情况时要做什么

相关内容