我想刪除符號鏈接以及源目錄。如何刪除符號鏈接以及源目錄
例如 -
ls -lrt
testsymlink -> /user/temp/testdir
我想刪除這兩個testsymlink
和/user/temp/testdir
。考慮我知道唯一的符號鏈接名稱。
使用python的任何實用工具都會很好。
我想刪除符號鏈接以及源目錄。如何刪除符號鏈接以及源目錄
例如 -
ls -lrt
testsymlink -> /user/temp/testdir
我想刪除這兩個testsymlink
和/user/temp/testdir
。考慮我知道唯一的符號鏈接名稱。
使用python的任何實用工具都會很好。
您可以使用os.path.realpath
的結果來檢測並刪除符號鏈接目標。例如:
import os
# ./foo -> ./bar
filepath = "./foo"
if (os.path.realpath(filepath) != filepath):
targetpath = os.path.realpath(filepath)
os.remove(filepath)
if (targetpath):
os.remove(targetpath)
編輯:我沒有看到你想在python中的解決方案:這一切只在unix外殼相關。雖然你可能打包下面的兩個命令在os.system()
電話,我強烈建議你按照蒂姆的答案。
要獲取符號鏈接所指向的對象的路徑,你可以使用readlink
:
$ readlink testsymlink
/user/temp/testdir
要刪除符號鏈接所指向的對象,你可以傳遞的readlink
到rm
輸出:
$ rm -r `readlink testsymlink`
反引號導致它們內部的命令被運行,然後被替換爲它自己的輸出。最後,要刪除符號鏈接本身,我們只需運行:
$ rm testsymlink
嗯,這個問題也被標記爲'shell',所以+1也是一個很好的解決方案。我只是不確定假設_Tim的答案below_將始終成立;-) –
@staticfloat - 我正在尋找Python實用程序。這兩種解決方案都非常好。 readlink對我來說是新的。謝謝! – Balaji
@Lukas:下面,上面,這些概念在強大的網絡空間中毫無意義。 :P – staticfloat
按預期工作正常。謝謝蒂姆! – Balaji