每天检查目录中的新文件 - linux bash script

时间:2016-06-08 14:44:28

标签: 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以外的其他内容可能会更好。

谢谢!

4 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

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

这意味着每天午夜运行你的脚本。然后在你的script.sh中,你要做的只是所有文件,“将它们转换为替代文件类型,然后在转换后将它们传输到另一个文件夹”。

答案 2 :(得分:1)

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

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

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

答案 3 :(得分:1)

您的cron作业(请参阅本页的其他答案)应保留已处理文件的列表,然后使用64-bit JVM获取新文件。 man comm

它是更好的替代品 UseCompressedOops

并且可能比使用comm -3 processed-list all-list更强大,因为您记录了实际处理的那些。