【发布时间】:2016-05-19 19:25:38
【问题描述】:
在我的 shell 脚本的开头,我有一个 FOR 循环来扫描文件夹以查看那里是否有任何文件,如果有,我需要处理每个文件。每个文件的处理过程需要一些时间(比如几分钟),具体取决于文件夹中有多少文件。
问题是:在处理每个文件的过程中,可能会有新文件进入文件夹,但我的测试表明新文件没有被拾取和处理。那么,有没有办法检测在 FOR 循环处理过程中出现的新文件?
我考虑过定期检查文件夹中的新文件,但我不想再次重新处理现有文件,更重要的是,因为这只是在脚本的开头,我不不希望 FOR 循环重复太多次。谢谢。****
for aFile in "$mydir"/*
do
// some tasks that may take 30 secs or so to finish for each file
done
【问题讨论】:
-
您是否考虑过重构以使用 fsnotifywait?我有一个 bash 脚本位于一个无限循环中,它会捕获信号。我有另一个 bash 脚本在给定目录上运行 fsnotifywait,并在发生正确的文件系统事件时向另一个 bash 脚本发送信号。