我必须删除最旧的目录。但是,此操作不必“包括”其中两个目录。
因此,目录内容如下所示:
[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