每天检查目录中是否有新文件 - linux bash 脚本



我想每天使用 linux bash 脚本监视目录中的新文件。

新文件每 4 小时左右添加到目录中。所以我想在一天结束时处理所有文件。通过过程,我的意思是将它们转换为替代文件类型,然后在转换后将它们通过管道传输到另一个文件夹。

我已经查看了inotify来监视目录,但无法判断您是否可以将其作为日常工作。

使用inotify我让这段代码在示例脚本中工作:

#!/bin/bash
while read line
do
        echo "close_write: $line"
done < <(inotifywait -mr -e close_write "/home/tmp/")

这确实会在添加新文件时通知,并且是即时的。

我正在考虑使用它并跟踪新文件,然后在一天结束时一次性处理它们。

我以前没有这样做过,所以我希望得到一些帮助。

也许inotify以外的其他东西会更好。

谢谢!

您可以使用每日cron作业:http://linux.die.net/man/1/crontab<</p>

div class="one_answers">

绝对应该考虑使用 cronjob。 编辑你的 cronfile 并将其放入:

0 0 * * * /path/to/script.sh

这意味着每天午夜运行脚本。 然后在您的script.sh中,您要做的就是对所有文件,"将它们转换为替代文件类型,然后在转换后将它们通过管道传输到另一个文件夹"。

您的 cron 作业(请参阅此页面上的其他答案)应保留已处理文件的列表,然后使用 comm -3 processed-list all-list 获取新文件。曼通讯

它是更好的
选择 awk 'FNR==NR{a[$0];next}!($0 in a)' processed-list all-list

并且可能比使用find更健壮,因为您记录了实际处理的内容。

要在一天结束时收集文件,只需使用 find:

find $DIR -daystart -mtime -1 -type f

然后,正如其他人指出的那样,设置一个 cron 作业来运行您的脚本。

相关内容

  • 没有找到相关文章

最新更新