Мне нужно удалить самый старый каталог. Но два каталога не обязательно должны быть "включены" в это действие.
Итак, содержимое каталога выглядит так:
[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'
... но ничего не удаляет.
Вы можете мне помочь, как этого добиться?
Заранее спасибо!
Эта команда работает независимо от названий каталогов.
Чтобы удалить третий самый старый каталог:
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