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)
符号链接仍然存在。如何删除文件以及指向该文件的所有符号链接?
没有从文件到指向它的符号链接的链接,因此没有直接的方法来考虑example
和查找link_example
指向它的链接。因此,删除指向文件的符号链接以及该文件需要首先找到所有符号链接。
您不指定您正在使用的系统,但如果您有GNUfind
,您可以使用以下命令删除文件及其链接
find -L / -samefile example -delete\n
Run Code Online (Sandbox Code Playgroud)\n\n你可能想跑
\n\nfind -L / -samefile example\n
Run Code Online (Sandbox Code Playgroud)\n\n首先列出将要删除的内容。
\n\n这指示find
遵循符号链接 ( -L
),从 开始/
,并报告解析为与 \xe2\x80\x94 相同 inode 的任何文件example
,因此这将匹配硬链接和软链接example
及其example
自身。
或者,仅使用POSIXfind
,您可以删除example
然后查找损坏的符号链接:
rm example\nfind -L / -type l\n
Run Code Online (Sandbox Code Playgroud)\n\n如果您确定应删除所有结果:
\n\nfind -L / -type l -exec rm {} +\n
Run Code Online (Sandbox Code Playgroud)\n\n将删除所有损坏的符号链接(在您可以写入的目录中)。
\n