文件出现后立即删除特定文件类型的文件

时间:2016-12-29 18:45:28

标签: linux bash file loops rm

我公司的程序会生成许多不同文件类型的数据。其中一个,.log文件类型占用了很多空间,因为我不需要日志文件,所以我想在程序创建它们时立即删除它们。不幸的是,我无法禁用日志创建选项,因为程序根本不提供这样的选项。我想知道:在find循环最佳选项中使用-delete选项运行while true,还是有更好/推荐的选项?

while true
do
    find -type f -name "*.log" -delete
done

2 个答案:

答案 0 :(得分:2)

您可以使用incrond守护程序监听文件系统更改并在文件出现时删除文件,或者只使用cron删除每分钟* .log文件作为更简单的解决方案。

答案 1 :(得分:1)

如果您安装了inotify-tools(应该是每个Linux发行版的一部分),此脚本将阻止等待文件创建事件并删除相应的文件:

inotifywait -e create --monitor --format "%w%f"  ${YOUR_LOG_DIR} | egrep --  line-buffered "\.log$" \
        | while read -r file; do
            rm -v $file;
          done