需要监控某个文件夹是否有变动,并输出变动的子文件夹目录给Python脚本作为参数使用。
请问有什么解决办法吗?
我查到有inotifywait可以监控文件变动和执行命令,但貌似不能输出目录作为参数。
需要监控某个文件夹是否有变动,并输出变动的子文件夹目录给Python脚本作为参数使用。
请问有什么解决办法吗?
我查到有inotifywait可以监控文件变动和执行命令,但貌似不能输出目录作为参数。
看起来有些复杂,我学习一下去(希望能看懂
放弃啦,看不懂
要是监控所有文件的最后修改时间,每五分钟扫一次,每次取出最后修改时间在五分钟内的文件,可能会简单一点
您可以试一下这个脚本。它能每隔一段时间列出被监视目录中有改动的文件或文件夹的名称。代码如下:
#!/bin/sh
while(true)
do
ls 被监视目录 -l --time=ctime --time-style='+%Y-%m-%d-%H-%M-%S' > old.txt
sleep 1
ls 被监视目录 -l --time=ctime --time-style='+%Y-%m-%d-%H-%M-%S' > new.txt
paste -d " " old.txt new.txt > compare.txt
awk '$6 != $13 {print $7}' compare.txt
done
代码解释:
old.txt
中(第5行);new.txt
中(第7行);经上述操作,我们就可以每5秒列出一次5秒内发生改动的文件/文件夹。
注意事项:
Ctrl + C
结束脚本运行。old.txt
、new.txt
和 compare.txt
。您可以在脚本运行结束后删除它们。您可以通过标准输出重定向的方式,将发生改变的文件名录保存到一个文本文件中(如修改脚本第9行代码为 awk '$6 != $13 {print $7}' compare.txt > changed.txt
),而后让 python 脚本定时读取这个文件,从中获取发生变化的文件/文件夹。
您也可以通过 xargs
命令将脚本第9行输出的文件名单作为参数传递给其他程序或脚本使用。xargs
的使用方法可参考 https://www.ruanyifeng.com/blog/2019/08/xargs-tutorial.html。
希望上述方法能给您带来帮助。
谢谢您的详细回复,不过我已经利用ChatGPT帮我写出了需要的脚本。
可以把解决办法发出来吗,后来者可以参考下
我的解决办法不是监控文件变动,而是每隔一段时间找到不符合要求的文件作为Python脚本的参数来运行脚本。