Я использую 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. Проверьте свою страницу руководства :-)