如何处理以前处理过的文件? (它们不会被压缩或重命名)

时间:2015-03-20 09:14:16

标签: linux bash file

我对包含大量日志的文件夹具有只读权限,这些日志的名称以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

日志未压缩或重命名。

我需要实现的是以这样的方式解析它们,即不再处理已处理的日志。此外,强制条件不是处理具有最新修改日期和时间的日志。

我可能会认为我需要在我具有写入权限的位置创建一个单独的文件,并且我的脚本已经处理了日志名称?

感谢您提供一些建议以及如何实施这些建议。 感谢

1 个答案:

答案 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