rmdir
删除文件一点也不难,但是删除目录呢?
$ pwd
/home/scott/libby/by_pool
$ ls
pool_02.jpg lieberman_pool lieberman_pool_bak
$ ls lieberman_pool_bak
pool_01.jpg pool_03.jpg
pool_01.jpg_bak pool_03.jpg_bak
$ rm lieberman_pool_bak
rm: cannot remove 'lieberman_pool_bak/': Is a directory
花点时间找找,你可能会发现rmdir命令,它就是专门用来删除目录的。那么快来试试吧。
$ rmdir lieberman_pool_bak
rmdir: 'lieberman_pool_bak/': Directory not empty
怎么会这样呢?根本不能用嘛。rmdir命令只能删除空目录。在这个例子中,lieberman_pool_bak文件夹只包含了4项内容,所以清空这个目录不算是很难的事,之后就可以使用rmdir命令了。但是如果想要删除的目录包含了10个子目录,每个子目录中又包含10多个子目录,每个单独的子目录中还包含25个文件,该怎么办呢?你打算不停地删除文件吗?还有一种更简单的办法!接着往下看
2 删除文件和非空的目录
rm -Rf
删除非空目录,还有一种更为简单的方法:把-R(或--recursive)和-f(或--force)选项结合起来使用。-r选项告诉rm命令进入到它发现的每个子目录中去删除文件,而-f选项只是告诉rm命令完成任务但不要因为些细节问题(比如文件夹非空)而烦扰用户。
$ pwd
/home/scott/libby/by_pool
$ ls
pool_02.jpg lieberman_pool lieberman_pool_bak
$ ls lieberman_pool_bak
pool_01.jpg pool_03.jpg
pool_01.jpg_bak pool_03.jpg_bak
$ rm -Rf lieberman_pool_bak
$ ls
pool_02.jpg lieberman_pool
它是删除目录及其中所有文件和子目录的一种稳妥的办法。
警告 :rm–Rf命令有可能损坏你的重要文件和系统。
经典的Linux警告就是,当作为root登录时,不要输入rm -Rf /*命令。这样你将删除你的系统。
一般来说,在rm–Rf命令中使用通配符要小心谨慎。rm -Rf libby*和rm -Rf libby *之间有着巨大的差异。前者会删除工作目录中以libby开头的所有东西,后者会删除任何名称恰好是libby的文件或文件夹,然后再删除目录中的所有其他东西。
也可能在无意间你就闯下了大祸,原本你想输入rm -Rf ~/libby/*,但是手指一不留神就输错了命令,告诉shell执行rm -Rf ~/libby /*。首先是~/libby目录被删除了,然后你的文件系统被迅速删除。
有一条很棒的小建议:永远不要输入rm -Rf .*/*删除以点号.作为名称开始的目录,因为这也匹配..,最终将删除当前工作目录的上级目录的所有东西。
再重申一次:作为普通用户,一定要慎用rm –Rf命令。作为root用户使用rm–Rf命令时一定要保持高度警惕。