linux - Rm 和 Egrep -v 组合

标签 linux unix grep solaris rm

我想删除除当前日志和之前日志之外的所有日志。 这些日志文件是在 20 分钟后创建的。所以文件名是这样的

abc_23_19_10_3341.log
 abc_23_19_30_3342.log
 abc_23_19_50_3241.log
 abc_23_20_10_3421.log

23 是今天的日期(也可能包括昨天的日期) 19 是小时(7 点钟),10,30,50,10 是分钟。

在这种情况下,我想保留 abc_23_20_10_3421.log,这是当前日志(当前正在写入)和 abc_23_19_50_3241.log(前一个) 并删除其余部分。

我通过创建一个文件夹,将第一个文件放入该文件夹并删除文件然后删除它来让它工作。但这太长了...

这个我也试过

files_nodelete=`ls -t | head -n 2 | tr '\n' '|'`
rm *.txt | egrep -v "$files_nodelete" 

但它没有用。但是如果我用 ls 而不是 rm 它就可以用。

我是 linux 的业余爱好者。所以请提出一个简单的想法..或逻辑..xargs rm 我试过但没有用。

还阅读了有关 mtime 的内容,但由于我是 linux 新手,所以看起来有点复杂

在 solaris 系统上工作

最佳答案

试试 Solaris 中的 logadm 工具,它可能是轮转日志的最简单方法。如果您只想完成任务,它会完成。

http://docs.oracle.com/cd/E23823_01/html/816-5166/logadm-1m.html

关于linux - Rm 和 Egrep -v 组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28113414/

相关文章:

linux - 如何使用脚本中的文件路径变量在 FreeBSD 中发送邮件?

shell - 如何记录 unix 命令花费的时间?

c - 使用 struct epoll_event 处理内存

linux - 如何编写 shell 脚本来与计算机建立 ssh 连接并继续该计算机上的剩余脚本

vb.net - C# System.PlatformID.Unix 与 Linux

regex - 在 Bash 中编辑/匹配某个特定匹配项下方的字符串 n 行?

regex - grep 在 OSX 上的工作方式是否不同

linux - Gentoo Linux : Docker container doesn't start: cgroup v2

linux - 使用 shell 脚本更新版本

Linux Bash 脚本