删除文件及其符号链接

删除文件及其符号链接

如果我创建一个文件并对其进行符号链接,例如

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 {} +

将删除所有损坏的符号链接(在您可以写入的目录中)。

相关内容