Удалить самый старый каталог, пропустив два из них

Я должен удалить самый старый каталог. Но два из каталогов не обязательно должны быть "включены" в это действие.

Итак, содержимое каталога выглядит так:

[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'

... но это ничего не удаляет.

Можете ли вы помочь мне, как этого добиться?

Заранее спасибо!

2 ответа

Решение

Эта команда работает независимо от имен каталогов.
Чтобы удалить третий самый старый каталог:
ls --sort t -l | grep -v total | awk '{print $9}' | head -n -2 | tail -1 | xargs rm -rf

Попробуй это:

ls -1tr | grep 2014\- | head -1 | xargs rm -rf
Другие вопросы по тегам