Используйте это: (Я изменил его, чтобы grep только папки, которые начинаются с теста)
for i in `\ls -1 --sort time | grep ^test | tr '\n' ' ' | cut -d " " -f 2-`;
do
rm -r "$i";
done
Ага. Работает для меня:
~ > ls
total 24
drwxr-xr-x 3 root root 4096 2012-08-23 01:08 Dev
drwxr-xr-x 2 root root 4096 2012-08-24 18:50 latest
drwxr-xr-x 2 root root 4096 2012-08-24 19:14 test1
drwxr-xr-x 2 root root 4096 2012-08-24 19:14 test2
drwxr-xr-x 2 root root 4096 2012-08-24 19:14 test3
drwxr-xr-x 2 root root 4096 2012-08-24 19:14 test4
~ > for i in `\ls -1 --sort time | grep ^test | tr '\n' ' ' | cut -d " " -f 2-`;
> do
> rm -r "$i";
> done
~ > ls
total 12
drwxr-xr-x 3 root root 4096 2012-08-23 01:08 Dev
drwxr-xr-x 2 root root 4096 2012-08-24 18:50 latest
drwxr-xr-x 2 root root 4096 2012-08-24 19:14 test4
~ >
Остались только самая младшая папка и папка, которая не соответствует test
Моя версия универсальна - вам не нужно указывать имя самой младшей тестовой папки.
А что касается комментария ниже - вы можете использовать следующую строку for
выражения
\ls -1 --sort time | grep ^test | tr ' ' '#' | tr '\n' ' ' | cut -d " " -f 2- | tr '#' ' '
если вы ожидаете пробелы в именах папок. Я использовал #
как необычный символ, который вряд ли будет в именах папок. Вы можете использовать другое, если вы ожидаете иметь пробелы или символы #
. Вы можете изменить #
на комбинацию символов, чтобы ограничить риск.
Доказательство, что это работает:
~ > ls
total 36
drwxr-xr-x 3 root root 4096 2012-08-23 01:08 Dev
drwxr-xr-x 2 root root 4096 2012-08-24 18:50 latest
drwxr-xr-x 2 root root 4096 2012-08-24 19:19 test
drwxr-xr-x 2 root root 4096 2012-08-24 19:19 test1
drwxr-xr-x 2 root root 4096 2012-08-24 19:19 test2
drwxr-xr-x 2 root root 4096 2012-08-24 19:19 test3
drwxr-xr-x 2 root root 4096 2012-08-24 19:20 test 4
drwxr-xr-x 2 root root 4096 2012-08-24 19:20 test5
drwxr-xr-x 2 root root 4096 2012-08-24 19:21 test 6
~ > for i in `\ls -1 --sort time | grep ^test | tr ' ' '#' | tr '\n' ' ' | cut -d " " -f 2- | tr '#' ' '`;
> do
> rm -r "$i";
> done
~ > ls
total 12
drwxr-xr-x 3 root root 4096 2012-08-23 01:08 Dev
drwxr-xr-x 2 root root 4096 2012-08-24 18:50 latest
drwxr-xr-x 2 root root 4096 2012-08-24 19:21 test 6
~ >