删除文件及其符号链接

tro*_*ura 7 command-line symlink rm

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

touch "example"
ln -s "example" "link_example"
Run Code Online (Sandbox Code Playgroud)

并使用

rm example
Run Code Online (Sandbox Code Playgroud)

符号链接仍然存在。如何删除文件以及指向该文件的所有符号链接?

Ste*_*itt 7

没有从文件到指向它的符号链接的链接,因此没有直接的方法来考虑example和查找link_example指向它的链接。因此,删除指向文件的符号链接以及该文件需要首先找到所有符号链接。

\n\n

您不指定您正在使用的系统,但如果您有GNUfind,您可以使用以下命令删除文件及其链接

\n\n
find -L / -samefile example -delete\n
Run Code Online (Sandbox Code Playgroud)\n\n

你可能想跑

\n\n
find -L / -samefile example\n
Run Code Online (Sandbox Code Playgroud)\n\n

首先列出将要删除的内容。

\n\n

这指示find遵循符号链接 ( -L),从 开始/,并报告解析为与 \xe2\x80\x94 相同 inode 的任何文件example,因此这将匹配硬链接和软链接example及其example自身。

\n\n

或者,仅使用POSIXfind,您可以删除example然后查找损坏的符号链接:

\n\n
rm example\nfind -L / -type l\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果您确定应删除所有结果:

\n\n
find -L / -type l -exec rm {} +\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n