多设备UNIX仅保留最后10个备份文件

问题描述 投票:0回答:1

我有不同日期的路由器备份文件的目录,多个日期\IP地址文件 如何只保留每个路由器 IP 地址的最后 10 个 例如每个仅 3 个备份

CPE-222_10.10.10.10_00:00.08-10-24.txt CPE-222_10.10.10.10_00:00.08-11-24.txt CPE-222_10.10.10.10_00:00.08-12-24.txt CPE-333_10.10.20.20_00:00.08-10-24.txt CPE-333_10.10.20.20_00:00.08-11-24.txt CPE-333_10.10.20.20_00:00.08-12-24.txt CPE-444_10.10.30.30_00:00.08-10-24.txt CPE-444_10.10.30.30_00:00.08-11-24.txt CPE-444_10.10.30.30_00:00.08-12-24.txt

我只需要每个 IP 地址的最后 2 个最新的 CPE-222_10.10.10.10_00:00.08-11-24.txt CPE-222_10.10.10.10_00:00.08-12-24.txt CPE-333_10.10.20.20_00:00.08-11-24.txt CPE-333_10.10.20.20_00:00.08-12-24.txt CPE-444_10.10.30.30_00:00.08-11-24.txt CPE-444_10.10.30.30_00:00.08-12-24.txt

谢谢

我尝试只使用良好的配置(超过 3000 b 的文件) 寻找 。 -type f -name "*.txt" -size -3000c -delete

我期待只活最后x良好的配置

谢谢

bash shell sorting unix awk
1个回答
0
投票

要仅保留每个路由器IP地址的最后2个最新备份文件,您可以使用以下命令:

ls -lt | awk -F_ '!seen[$2]++' | awk 'NR > 6' | xargs rm

其工作原理如下:

ls -lt
按修改时间降序列出当前目录下的所有文件。
awk -F_ '!seen[$2]++'
过滤输出,仅保留每个唯一 IP 地址的第一次出现(第二个字段由
_
分隔)。
awk 'NR > 6'
跳过前 6 行(每个 IP 地址的 2 个最新文件)并保留其余部分。
xargs rm
删除剩余文件。

确保在备份文件所在目录中运行此命令。

© www.soinside.com 2019 - 2024. All rights reserved.