美文网首页
liunx下保留最新的40份文件,旧的删除

liunx下保留最新的40份文件,旧的删除

作者: 随卐星 | 来源:发表于2019-10-28 13:00 被阅读0次

ls /var/log/zabbix/zabbix-backup/ -lt | awk '{if (NR>40) print $9}' | xargs rm -rf

通过ls -lt命令最新的文件,排在最前面。通过awk 获取文件名,判断大于40个文件的列出来,即这里列出来的就是最老于40的文件。然后通过xargs rm -rf进行删除。

ls /var/log/zabbix/zabbix-backup/ -lt

total 58284

-rw-r--r-- 1 root root 1528615 Oct 27 12:00 zabbix_cfg__20191027-1200_db-mysql-4.2.0.sql.gz

-rw-r--r-- 1 root root 1529029 Oct 26 12:00 zabbix_cfg__20191026-1200_db-mysql-4.2.0.sql.gz

root@zabbix:~# ls /var/log/zabbix/zabbix-backup/ -lt | awk '{if (NR>35) print $9}'

zabbix_cfg__20190923-1200_db-mysql-4.2.0.sql.gz

zabbix_cfg__20190922-1200_db-mysql-4.2.0.sql.gz

zabbix_cfg__20190921-1200_db-mysql-4.2.0.sql.gz

zabbix_cfg__20190920-1200_db-mysql-4.2.0.sql.gz

zabbix_cfg__20190919-1200_db-mysql-4.2.0.sql.gz

以下转化为shell 做定时任务删除旧的备份。这里注意 awk 要引用sehll 外部变量。此时引号中间一单引号用需要"'"$i"'"进行引用外部的变量。这里如果不用引用外部的变量,ls返回的结果不是绝对路径会导致删除失败。前面定义了路径的变量,然后在awk shell当中进行引用。

cat /usr/bin/dbackup-router.sh

#!/bin/bash

dir=$(ls -lt /router |awk '/^d/ {print $NF}')

for i in $dir

do

    ls -lt /router/$i  | awk '{if (NR>40) print "/router/""'$i'""/"$9}' |xargs rm  -rf

done

相关文章

网友评论

      本文标题:liunx下保留最新的40份文件,旧的删除

      本文链接:https://www.haomeiwen.com/subject/ycxbvctx.html