文件出现后立即删除特定文件类型的文件
Remove files of specific file type as soon as the file appears
我公司的程序生成大量具有许多不同文件类型的数据。其中之一,.log
文件类型使用很多 space,因为我不需要日志文件,所以我想在程序创建它们后立即删除它们。不幸的是,我无法禁用日志创建选项,因为该程序根本不提供这样的选项。我想知道:运行 find
和 -delete
选项在 while true
循环中是最佳选项,还是有任何 better/recommended 选项?
while true
do
find -type f -name "*.log" -delete
done
您可以使用 incrond
守护程序来侦听文件系统更改并在文件出现时删除文件,或者使用 cron 每分钟删除 *.log 文件作为更简单的解决方案。
如果您安装了 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
我公司的程序生成大量具有许多不同文件类型的数据。其中之一,.log
文件类型使用很多 space,因为我不需要日志文件,所以我想在程序创建它们后立即删除它们。不幸的是,我无法禁用日志创建选项,因为该程序根本不提供这样的选项。我想知道:运行 find
和 -delete
选项在 while true
循环中是最佳选项,还是有任何 better/recommended 选项?
while true
do
find -type f -name "*.log" -delete
done
您可以使用 incrond
守护程序来侦听文件系统更改并在文件出现时删除文件,或者使用 cron 每分钟删除 *.log 文件作为更简单的解决方案。
如果您安装了 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