我想删除文件的所有符号链接。我有一个目录结构/usr/local/instantclient/11.2.0.3
,其中包含很多文件,并且在这些文件中有符号链接。/usr/local/lib/
现在,我想删除这些文件的所有这些符号链接。我如何在一个命令中执行此操作。如果我删除/usr/local/instantclient/11.2.0.3
包含文件的实际目录,则会将断开的链接保留在中/usr/local/lib
。
我想删除文件的所有符号链接。我有一个目录结构/usr/local/instantclient/11.2.0.3
,其中包含很多文件,并且在这些文件中有符号链接。/usr/local/lib/
现在,我想删除这些文件的所有这些符号链接。我如何在一个命令中执行此操作。如果我删除/usr/local/instantclient/11.2.0.3
包含文件的实际目录,则会将断开的链接保留在中/usr/local/lib
。
Answers:
要删除链接(从man find
下方-type
):
l symbolic link; this is never true if the -L option or the
-follow option is in effect, unless the symbolic link is
broken. If you want to search for symbolic links when -L
is in effect, use -xtype.
我认为这应该可以解决问题:
find /usr/local/lib/ -maxdepth 1 -follow -type l
输出是否产生要删除的文件列表?如果是这样,则当您100%确定时:
find /usr/local/lib/ -maxdepth 1 -follow -type l -delete
这将仅删除断开的链接。要删除所有链接,请删除该-follow
节,但是我不会在下执行该操作/usr/local/lib
。
-follow
选项不起作用。只能find /usr/local/lib/ -maxdepth 1 -type l | delete
工作。但是我认为这不是最好的方法。实际上没有办法列出文件的所有软链接,而可以使用文件的inode值列出文件的硬链接。这是关于它的讨论stackoverflow.com/questions/4532241/…–
/usr/local/lib
?另外,-follow
您的find版本是否没有选择?
/usr/local/lib
(但不递归),因此,如果还有其他断开的链接,则显示的内容将超出所需。并不是说一开始就应该有很多断开的链接,所以可能还可以,但是系统可能会故意断开链接,我们希望保留这些链接。