有没有办法检查是否有指向目录的符号链接?

linux symlink

63270 观看

8回复

385904 作者的声誉

我的服务器上有一个文件夹,我有许多符号链接指向。我已经创建了一个新文件夹,我想更改所有这些符号链接以指向新文件夹。我考虑用符号链接替换原始文件夹到新文件夹,但似乎如果我继续这种做法,它可能会非常快速地弄乱。

我一直在做的是手动更改符号链接以指向新文件夹,但我可能错过了一对。

有没有办法检查是否有任何指向特定文件夹的符号链接?

作者: nickf 的来源 发布者: 2008 年 9 月 19 日

回应 (8)


76

2911 作者的声誉

决定

我使用find命令。

find . -lname /particular/folder

这将以递归方式搜索当前目录中的符号链接/particular/folder。请注意,它只会找到绝对的符号链接。类似的命令可用于搜索指向名为“folder”的对象的所有符号链接:

find . -lname '*folder'

从那里你需要清除任何误报。

作者: skymt 发布者: 19.09.2008 07:15

1

798 作者的声誉

find / -lname 'fullyqualifiedpathoffile'
作者: bfabry 发布者: 19.09.2008 07:16

1

660287 作者的声誉

对于硬链接,您可以使用“ls”选项之一获取目录的inode(-i我认为)。

然后,find-inum将定位所有常见的硬链接。

对于软链接,您可能必须ls -l在“ - >”之后对所有文件进行查找并对其进行标准化以确保它是绝对路径。

作者: paxdiablo 发布者: 19.09.2008 07:17

5

701152 作者的声誉

没有任何直接的方法来检查这样的符号链接。考虑您可能没有一直安装的文件系统(例如外部USB驱动器),它可能包含符号链接到系统上的另一个卷。

你可以做一些事情:

for a in `find / -type l`; do echo "$a -> `readlink $a`"; done | grep destfolder

我注意到FreeBSD find不支持该-lname选项,这就是为什么我最终得到了上述内容。

作者: Greg Hewgill 发布者: 19.09.2008 07:19

2

950 作者的声誉

除了查看所有其他文件夹,如果有链接指向原始文件夹,我认为这是不可能的。如果是的话,我会感兴趣的。

作者: stephanea 发布者: 19.09.2008 07:19

3

31 作者的声誉

find . -type l -printf '%p -> %l\n'
作者: no1uknow 发布者: 08.10.2010 03:26

7

71 作者的声誉

您可以使用Mark Lord编写symlinks程序审核符号链接- 它将扫描整个文件系统,将符号链接路径规范化为绝对形式并将其打印到stdout。

作者: JJK 发布者: 13.03.2012 10:46

1

3180 作者的声誉

find /foldername -type l -exec ls -lad {} \;
作者: Lunar Mushrooms 发布者: 03.01.2014 12:50
32x32