我正在使用 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 目录”。查看你的手册页 :-)