在unix中,将10天以前的文件压缩到一个文件夹中的脚本?
我试图在UNIX服务器中使用“zip”命令压缩日志文件。 但是我想在10天前自动压缩文件,而不用手动更改命令。任何人都可以建议将10天以前的文件压缩到一个文件夹中的脚本。您可以使用command和zip命令,如下所示在unix中,将10天以前的文件压缩到一个文件夹中的脚本?,unix,Unix,我试图在UNIX服务器中使用“zip”命令压缩日志文件。 但是我想在10天前自动压缩文件,而不用手动更改命令。任何人都可以建议将10天以前的文件压缩到一个文件夹中的脚本。您可以使用command和zip命令,如下所示 find . -name '*.log' -mtime +10 | zip logfiles.zip -@ 另一种选择: find . -iname '*.log' -mtime +9 -exec zip logfiles.zip {} + 您可能希望使用zip的-m选项,该选
find . -name '*.log' -mtime +10 | zip logfiles.zip -@
另一种选择:
find . -iname '*.log' -mtime +9 -exec zip logfiles.zip {} +
您可能希望使用zip的-m
选项,该选项将在压缩日志后删除日志
find . -iname '*.log' -mtime +9 -exec zip -m logfiles.zip {} +
它是如何工作的?
查找。
将查找当前目录中开始的文件
-iname'*.log'
过滤以.log、.log、.log等结尾的文件
-mtime+9
将选择至少在今天9天前(即:10天前)修改的文件
-exec zip-m logfiles.zip{}+
将运行zip-m logfiles.zip文件1文件2文件3。。。等等
zip-m file.zip文件
将文件压缩到file.zip并删除文件
其他一些选项:
您可能希望多次运行此脚本,因此可以为日志文件使用一个变量,例如以mm.dd.yyyy格式表示的日期:
find . -iname '*.log' -mtime +9 -exec zip -m logfiles-$(date +%m.%d.%Y).zip {} +
如果您只想使用当前目录(而不是其子目录)的日志,可以使用find:
find . -maxdepth 1 -iname '*.log' -mtime +9 -exec zip -m logfiles-$(date +%m.%d.%Y).zip {} +
假设您有如下内容:
app1/logs/log1.log
app1/logs/log2.log
app2/logs/log1.log
app2/logs/log2.log
使用-execdir
(而不是-exec
)时,zip命令将针对在其中查找文件的每个子目录执行
因此:
将给您留下:
app1/logs/logfiles.zip --> (contains log1 and log2 from app1/log)
app2/logs/logfiles.zip --> (contains log1 and log2 from app2/log)
app1/logs/logfiles.zip --> (contains log1 and log2 from app1/log)
app2/logs/logfiles.zip --> (contains log1 and log2 from app2/log)