Назад | Перейти на главную страницу

Удалить каталоги в Solaris

Я использую Solaris. У меня есть несколько каталогов со следующими названиями:

saa_first.data
saa_second.data
saa_third.data

Я хочу удалить эти каталоги вместе с их содержимым, поэтому использую:

rm -fr saa*

Я получаю следующие вопросы:

rm: examine files in directory saa_first.data (yes/no)? n
rm: examine files in directory saa_second.data (yes/no)? n
rm: examine files in directory saa_third.data (yes/no)? n

Я не получаю ошибок, но каталоги не удаляются. Что дает?

Вот моя информация о Solaris:

$ cat /etc/release
                  Solaris 10 10/08 s10s_u6wos_07b SPARC
       Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
                    Use is subject to license terms.
                        Assembled 27 October 2008

ОБНОВИТЬ:

Он работает после того, как я использую следующую команду:

/usr/xpg4/bin/rm -fr saa*

Меня все еще интересует объяснение, почему это не сработало с /usr/bin/rm хотя.

Скорее всего, вы обнаружите, что у вас есть rm псевдоним rm -i. Если бы вы ответили y на вопрос, вас попросили бы разрешить удаление каждого файла в каждом каталоге.

$ alias rm
alias rm='rm -i'

$ rm -r tmp1
rm: examine files in directory tmp1 (yes/no) y
rm: remove tmp1/1 (yes/no) y
rm: remove tmp1/2 (yes/no) y
rm: remove tmp1: (yes/no) y

Вы можете временно удалить псевдоним с помощью unalias команда. Если вы хотите удалить его навсегда, вам нужно будет найти, где в файлах инициализации оболочки он определен, и удалить его. Если бы вы использовали полный путь /usr/bin/rm это сработало бы так же, как /usr/xpg4/bin/rm

Я полагаю, это связано с тем, что файлы не удаляются из этих каталогов, поэтому каталоги не могут быть удалены.

Более контролируемый способ сделать это был бы следующий

find . -name "saa*" -maxdepth 1 -exec rm {} \;
find . -name "saa*" -maxdepth 1 -exec rmdir {} \;

Это гарантирует, что сначала он удалит файлы из этих каталогов, а затем, когда каталоги опустеют, он удалит сами каталоги.

В Solaris нет опции -d? В BSD я бы использовал rm -dfr directory. Проверьте свою страницу руководства :-)