Удалить самый старый каталог, пропустив два из них
Я должен удалить самый старый каталог. Но два из каталогов не обязательно должны быть "включены" в это действие.
Итак, содержимое каталога выглядит так:
[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