在 Solaris 中删除目录

在 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

答案1

您很可能会发现您已将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。如果要永久删除它,您必须找到 shell 初始化文件中定义它的位置并将其删除。如果您使用完整路径,/usr/bin/rm它将与以下操作相同/usr/xpg4/bin/rm

答案2

我认为这是因为文件没有从这些目录中删除,因此无法删除这些目录。

一个更可控的方法是

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

这将确保它首先从这些目录中删除文件,然后一旦目录为空,它就会删除目录本身。

答案3

Solaris 上没有 -d 选项吗?在 BSD 上,我会使用“rm -dfr 目录”。查看你的手册页 :-)

相关内容