![处理文件夹中之前未处理过的文件](https://linux22.com/image/1321451/%E5%A4%84%E7%90%86%E6%96%87%E4%BB%B6%E5%A4%B9%E4%B8%AD%E4%B9%8B%E5%89%8D%E6%9C%AA%E5%A4%84%E7%90%86%E8%BF%87%E7%9A%84%E6%96%87%E4%BB%B6.png)
我需要使用脚本对目录中的一系列文件执行操作。操作完成后,我想保留已处理文件的日志,以便下次运行脚本时,它不会再次尝试执行该操作。
因此,假设我可以找到所有需要这样处理的文件:
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
那么按文件夹拆分文件怎么样?新文件放在一个文件夹中,处理过的文件放在另一个文件夹中。然后“处理”包括移动文件。