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

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

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

有帮助吗?

解决方案

我会使用 find 命令。

find . -lname /particular/folder

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

find . -lname '*folder'

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

其他提示

您可以使用以下命令审核符号链接 symlinks 程序 由 Mark Lord 编写——它将扫描整个文件系统,将符号链接路径标准化为绝对形式并将它们打印到标准输出。

实际上没有任何直接的方法来检查此类符号链接。考虑一下您可能有一个并非始终挂载的文件系统(例如。外部 USB 驱动器),其中可能包含指向系统上另一个卷的符号链接。

你可以做一些事情:

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

我注意到 FreeBSD 的 find 不支持 -lname 选项,这就是我最终得到上述结果的原因。

find . -type l -printf '%p -> %l\n'

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

find / -lname 'fullyqualifiedpathoffile'
find /foldername -type l -exec ls -lad {} \;

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

然后一个 find-inum 将找到所有常见的硬链接。

对于软链接,您可能需要执行以下操作 ls -l 在所有文件上查找“->”之后的文本并将其规范化以确保它是绝对路径。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top