Php 如何找到指向当前文件的符号链接?
在PHP或Perl中有没有找到指向当前文件的所有符号链接的方法?必须遍历文件系统或使用Php 如何找到指向当前文件的符号链接?,php,perl,Php,Perl,在PHP或Perl中有没有找到指向当前文件的所有符号链接的方法?必须遍历文件系统或使用find(它本身遍历FS)。符号链接实际上并没有以任何有意义的方式链接到文件;它们只包含指向真实文件的路径。这些链接可以在任何地方,在路径中使用之前,操作系统根本不需要知道它们。无需遍历文件系统查找所有符号链接,然后检查它们的目的地,不需要。但是如果您仍然想这样做,这很简单: use strict; use warnings; use File::Find; my $target = 'the filenam
find
(它本身遍历FS)。符号链接实际上并没有以任何有意义的方式链接到文件;它们只包含指向真实文件的路径。这些链接可以在任何地方,在路径中使用之前,操作系统根本不需要知道它们。无需遍历文件系统查找所有符号链接,然后检查它们的目的地,不需要。但是如果您仍然想这样做,这很简单:
use strict;
use warnings;
use File::Find;
my $target = 'the filename you want to find links to';
finddepth(
sub {
return if not -l $File::Find::name;
print "found $File::Find::name!\n" if readlink($File::Find::name) eq $target;
},
'/'
);
没有搜索整个文件系统就不行 符号链接(至少在linux中)基本上是指针。他们从一个位置指向另一个位置,但如果不进行彻底搜索,他们所指向的位置无法知道指向它的是什么
您可以通过完全搜索来完成这项工作,但这很容易需要很长时间,具体取决于您的系统。在PHP中,理论上,您可以使用a并将其设置为从文件系统根目录进行遍历。然后,您可以检查,如果是,请使用查看它指向的位置:
$fsi = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator('/'),
RecursiveIteratorIterator::SELF_FIRST
);
foreach ($fsi as $fso) {
if ($fso->isLink()) {
echo readlink($fso->getPathname());
}
}
实际上,执行PHP脚本的用户可能不允许这样做。谢谢,我希望避免扫描整个文件系统,但我很欣赏代码:-)