2012-12-18 75 views
0

我想在Linux中删除一个非空目录,里面有一个符号链接的目录结构。当我运行时在linux中删除一个包含符号链接的目录

rm -rf /direcory 

它不仅删除所有符号链接和目录,而且还删除那些符号链接指向的所有目录。有没有命令只是一个包含符号链接的目录?

+1

您正在使用哪个'rm'命令?标准的人不这样做;它只是删除符号链接,而不是符号链接指向的东西(除非符号链接指向您正在删除的目录下的目录)。 –

+0

非常感谢,我检查了它的类型,它是一个自定义的脚本,所以不要这么做:) – sublime

+1

这就是为什么在所有命令中,你不应该自定义'rm'。当“保护性”的人试图定制它的时候,我讨厌它,因为它们很少得到正确的结果,这使得它比至少可预测的原始命令更加危险。 –

回答

2

反例:

$ mkdir directory 
$ cd directory 
$ mkdir to-be-removed to-be-left-behind 
$ cd to-be-left-behind 
$ mkdir a b c 
$ cd ../to-be-removed 
$ ln -s ../to-be-left-behind/* . 
$ cd .. 
$ ls -lR 
total 0 
drwxr-xr-x 5 jleffler staff 170 Dec 17 17:25 to-be-left-behind 
drwxr-xr-x 5 jleffler staff 170 Dec 17 17:25 to-be-removed 

./to-be-left-behind: 
total 0 
drwxr-xr-x 2 jleffler staff 68 Dec 17 17:25 a 
drwxr-xr-x 2 jleffler staff 68 Dec 17 17:25 b 
drwxr-xr-x 2 jleffler staff 68 Dec 17 17:25 c 

./to-be-left-behind/a: 

./to-be-left-behind/b: 

./to-be-left-behind/c: 

./to-be-removed: 
total 24 
lrwxr-xr-x 1 jleffler staff 22 Dec 17 17:25 a -> ../to-be-left-behind/a 
lrwxr-xr-x 1 jleffler staff 22 Dec 17 17:25 b -> ../to-be-left-behind/b 
lrwxr-xr-x 1 jleffler staff 22 Dec 17 17:25 c -> ../to-be-left-behind/c 
$ rm -fr to-be-removed 
$ ls -lR 
total 0 
drwxr-xr-x 5 jleffler staff 170 Dec 17 17:25 to-be-left-behind 

./to-be-left-behind: 
total 0 
drwxr-xr-x 2 jleffler staff 68 Dec 17 17:25 a 
drwxr-xr-x 2 jleffler staff 68 Dec 17 17:25 b 
drwxr-xr-x 2 jleffler staff 68 Dec 17 17:25 c 

./to-be-left-behind/a: 

./to-be-left-behind/b: 

./to-be-left-behind/c: 
$ 

的符号链接被删除,但它们在点的目录不会被删除。

因此,在您的示例中还有其他工作。例如,如果符号链接指向to-be-removed下的文件或目录,则符号链接和目标都将被删除,但仅仅是因为目标位于火线中。

相关问题