2012-12-18 73 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下的文件或目錄,則符號鏈接和目標都將被刪除,但僅僅是因爲目標位於火線中。

相關問題