我对包含大量名称以 SystemOut* 开头的日志的文件夹具有只读访问权限:
SystemOut_15.03.12_1215124.log
SystemOut_15.03.12_23624.log
SystemOut_15.03.02_845645.log
SystemOut_15.03.14_745665.log
SystemOut_15.03.16_456457.log
SystemOut_15.03.07_474574.log
日志未压缩或重命名。
我需要实现的是以这样一种方式解析它们,使得已经处理过的日志不会被再次处理。此外,强制条件是不处理具有最新修改日期和时间的日志。
我可能会认为我需要在我具有写入权限的位置创建一个单独的文件,其中包含我的脚本已经处理过的日志名称?
如果您能提供一些建议以及如何实现这些建议,我们将不胜感激。 谢谢
最佳答案
我同意在单独的文件中跟踪您已处理的日志是个好主意。从你的问题中不清楚你将如何识别当前日志,所以我把它留给你。
尝试这样的事情:
mysavedfiles=/some/path/file.txt
curfile=$(ls -tr | tail -n 1)
for fn in logfiles/*.log
do
if ! grep -q $fn $mysavedfiles && [ "$fn" != "$curfile" ]
then
... process it ...
echo $fn >>$mysavedfiles
fi
done
您还可以通过更改为由某些处理提供的 while read
循环来排除最后一个文件:
ls -tr logfile/*.log | head -n -1 | while read fn
do
....
done
关于linux - 如何不处理之前已经处理过的文件? (它们不会被压缩或重命名),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29163047/