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

nic*_*ckf 60 linux symlink

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

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

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

sky*_*ymt 78

我使用find命令.

find . -lname /particular/folder
Run Code Online (Sandbox Code Playgroud)

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

find . -lname '*folder'
Run Code Online (Sandbox Code Playgroud)

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

  • 谢谢,这很好用.对于尝试过这个问题的其他人:使用-maxdepth开关确实有助于加快搜索速度,因为我知道链接的深度. (4认同)

小智 7

您可以使用审计符号链接symlinks程序由Mark阁下写-它会扫描整个文件系统的,规范的符号链接路径绝对形式并打印到标准输出.


Gre*_*ill 5

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

你可以做一些事情:

for a in `find / -type l`; do echo "$a -> `readlink $a`"; done | grep destfolder
Run Code Online (Sandbox Code Playgroud)

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


小智 5

find . -type l -printf '%p -> %l\n'
Run Code Online (Sandbox Code Playgroud)