如果我创建一个文件并对其进行符号链接,例如
touch "example"
ln -s "example" "link_example"
并使用
rm example
符号链接仍然存在。如何删除文件以及指向该文件的所有符号链接?
答案1
没有从文件到指向它的符号链接的链接,因此没有直接的方法来考虑example
和查找link_example
指向它的链接。因此,删除指向文件的符号链接以及该文件需要首先找到所有符号链接。
您没有指定您正在使用什么系统,但如果您有GNUfind
,您可以删除文件及其链接
find -L / -samefile example -delete
你可能想跑
find -L / -samefile example
首先列出将要删除的内容。
这指示find
遵循符号链接 ( -L
),从 开始/
,并报告解析为相同 inode 的任何文件example
— 因此这将匹配硬链接和软链接example
以及example
自身。
或者,仅使用POSIXfind
,您可以删除example
然后查找损坏的符号链接:
rm example
find -L / -type l
如果您确定应删除所有结果:
find -L / -type l -exec rm {} +
将删除所有损坏的符号链接(在您可以写入的目录中)。