有没有办法检查是否有指向目录的符号链接?
我在我的服务器上有一个文件夹,我有一些符号链接指向。 我已经创build了一个新的文件夹,我想改变所有这些符号链接指向新的文件夹。 我曾考虑用一个符号链接replace原来的文件夹到新的文件夹,但似乎如果我继续这种做法,它可以非常快速地变得非常混乱。
我一直在做的是手动改变符号链接指向新的文件夹,但我可能错过了一对夫妇。
有没有办法检查是否有任何指向特定文件夹的符号链接?
我会使用find命令。
find . -lname /particular/folder
这将recursion地search当前目录中的符号链接到/particular/folder
。 请注意,它只会find绝对的符号链接。 可以使用类似的命令search指向名为“folder”的对象的所有符号链接:
find . -lname '*folder'
从那里你将需要消除任何误报。
您可以使用Mark Lord编写的symlinks
程序审计符号symlinks
– 它将扫描整个文件系统,将符号链接path规范化为绝对forms并将其打印到标准输出。
没有任何直接的方法来检查这种符号链接。 考虑一下你可能有一个没有被安装的文件系统(例如一个外部的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”选项之一来获得你的目录的inode( -i
,我想)。
然后用-inum
查找将find所有常见的硬链接。
对于软链接,您可能必须对“ – >”之后的所有查找文本的文件执行ls -l
,并对其进行规范化,以确保它是绝对path。