处理文件夹中之前未处理过的文件

处理文件夹中之前未处理过的文件

我需要使用脚本对目录中的一系列文件执行操作。操作完成后,我想保留已处理文件的日志,以便下次运行脚本时,它不会再次尝试执行该操作。

因此,假设我可以找到所有需要这样处理的文件:

for i in `find /logfolder -name '20*.log'` ; do
    process_log $i
    echo $i >> processedlogsfile
done

所以我有一个包含我已经处理过的日志的文件,我的目标是修改 for 循环,以便这些已处理的日志不会被第二次处理。

每次进行手动扫描似乎效率不高,特别是当处理的日志文件变得越来越大时:

 if grep -iq "$i" processdlogfiles ; then continue; fi

如果在设置 for 循环时可以排除这些文件就好了。

请注意,所讨论的操作系统是 Linux 的衍生产品,是一种管理设备,具有有限的工具集(attr例如,没有命令),因此无法安装其他实用程序(当然,这是可能的,但不是一个选项)。不过,大多数常见的 bash shell 命令都可用。

此外,已处理文件的文件名和位置必须保持不变 - 不能更改它们以反映其处理状态

答案1

添加| fgrep -vf processedlogfiles到您的查找命令

答案2

那么按文件夹拆分文件怎么样?新文件放在一个文件夹中,处理过的文件放在另一个文件夹中。然后“处理”包括移动文件。

相关内容