我对包含大量日志的文件夹具有只读权限,这些日志的名称以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
日志未压缩或重命名。
我需要实现的是以这样的方式解析它们,即不再处理已处理的日志。此外,强制条件不是处理具有最新修改日期和时间的日志。
我可能会认为我需要在我具有写入权限的位置创建一个单独的文件,并且我的脚本已经处理了日志名称?
感谢您提供一些建议以及如何实施这些建议。 感谢
答案 0 :(得分:2)
我同意在单独的文件中跟踪已经处理的日志是个好主意。从您的问题中不清楚您将如何识别当前日志,因此我将其留在您的法庭上。
尝试这样的事情:
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