删除最旧的目录,跳过其中两个

删除最旧的目录,跳过其中两个

我必须删除最旧的目录。但是,此操作不必“包括”其中两个目录。

因此,目录内容如下所示:

[root@myserver backup]# ls -la
total 84
drwxr-xr-x 21 root root 4096 Jun 18 04:10 .
drwxr-xr-x 15 root root 4096 Dec 30 11:42 ..
drwxr-xr-x  9 root root 4096 Jan 11 07:25 2013
drwxr-xr-x 13 root root 4096 Jun  4 08:01 2014
drwxr-xr-x  2 root root 4096 Jun 12 04:20 2014-06-12
drwxr-xr-x  2 root root 4096 Jun 13 04:20 2014-06-13
drwxr-xr-x  2 root root 4096 Jun 14 04:20 2014-06-14
drwxr-xr-x  2 root root 4096 Jun 15 04:20 2014-06-15
drwxr-xr-x  2 root root 4096 Jun 16 04:20 2014-06-16
drwxr-xr-x  2 root root 4096 Jun 17 04:20 2014-06-17
drwxr-xr-x  2 root root 4096 Jun 18 04:20 2014-06-18
[root@myserver backup]# 

在这种情况下,必须删除目录 2014-06-12,而不要删除目录 2013 和 2014。

我尝试执行下一个命令:

rm -f 'ls -l | grep 2014\- | head -1'

...但它不会删除任何东西。

你能帮助我如何实现这个目标吗?

先感谢您!

答案1

无论目录名称如何,此命令都有效。
要删除第三个最旧的目录:
ls --sort t -l | grep -v total | awk '{print $9}' | head -n -2 | tail -1 | xargs rm -rf

答案2

尝试这个:

ls -1tr | grep 2014\- | head -1 | xargs rm -rf

相关内容