【问题标题】:How to delete the symlink along with the source directory如何删除符号链接以及源目录
【发布时间】:2012-09-22 14:14:13
【问题描述】:

我想删除符号链接以及源目录。

例如——

ls -lrt
testsymlink -> /user/temp/testdir

我想同时删除 testsymlink/user/temp/testdir。考虑到我知道唯一的符号链接名称。

任何带有 python 的实用程序都会做得很好。

【问题讨论】:

    标签: python shell directory


    【解决方案1】:

    编辑:我没有看到您需要 python 中的解决方案:这仅在 unix shell 中相关。尽管您可以将以下两个命令包装在 os.system() 调用中,但我强烈建议您遵循 Tim 的回答。

    要获取符号链接指向的对象的路径,可以使用readlink

    $ readlink testsymlink
    /user/temp/testdir
    

    要删除符号链接指向的对象,您可以将readlink 的输出传递给rm

    $ rm -r `readlink testsymlink`
    

    反引号导致它们内部的命令运行,然后替换为它自己的输出。最后,要删除符号链接本身,我们只需运行:

    $ rm testsymlink
    

    【讨论】:

    • 好吧,这个问题也被标记为shell,所以 +1 以获得同样好的解决方案。我只是不确定假设 Tim 在下面的回答 是否永远成立;-)
    • @staticfloat - 我在寻找 Python 实用程序。两种解决方案都非常好。 readlink 对我来说是新的。谢谢!
    • @Lukas:下面,上面,这些概念在强大的网络空间中毫无意义。 :P
    【解决方案2】:

    您可以使用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)
    

    【讨论】:

    • 按预期工作正常。谢谢蒂姆!
    猜你喜欢
    • 2010-09-17
    • 2019-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-10
    • 1970-01-01
    • 1970-01-01
    • 2018-12-27
    相关资源
    最近更新 更多