有沒有在PHP或Perl中找到當前文件的所有符號鏈接的方法?如何找到當前文件的符號鏈接?
4
A
回答
7
沒有遍歷文件系統尋找所有的符號鏈接,然後檢查它們的目的地,沒有。但是,如果你仍然要做到這一點,這是很直接:
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;
},
'/'
);
4
不是沒有走文件系統或使用find
(它本身走FS)。符號鏈接實際上並沒有以任何有意義的方式鏈接到文件;它們只包含一個真實文件的路徑。這些鏈接可以在任何地方,操作系統並不一定知道它們,直到它們在路徑中使用。
2
不是沒有搜索整個文件系統。
符號鏈接(在Linux中至少)基本上是指針。他們從一個地方指向另一個地方,但是他們指向的位置在沒有詳盡搜索的情況下無法知道指向它的位置。
您可以通過完全搜索來完成此操作,但根據您的系統,它可能很容易需要很長時間。
2
在PHP中,您可以 - 理論上 - 使用RecursiveDirectoryIterator並將其設置爲從文件系統根目錄遍歷。然後,您可以檢查currently iterated filesystem item is a link如果是的話,用readlink,看看它指出:
$fsi = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator('/'),
RecursiveIteratorIterator::SELF_FIRST
);
foreach ($fsi as $fso) {
if ($fso->isLink()) {
echo readlink($fso->getPathname());
}
}
在實踐中,你可能不會被允許做從用戶執行PHP腳本。
+1
感謝您的幫助:-) – Eric 2010-11-09 22:34:48
相關問題
- 1. 符號鏈接:找到鏈接到該文件
- 2. 前置符號鏈接的文件名
- 3. 找不到符號鏈接
- 4. 查明當前文件系統是否支持符號鏈接
- 5. 隱藏符號鏈接文件夾到硬鏈接文件夾
- 6. 如何獲取當前符號鏈接目錄的父目錄?
- 7. 如何獲取符號鏈接文件,看非符號鏈接的目錄
- 8. 符號鏈接鏈接文件夾
- 9. 如何鏈接到當前的PHP文件
- 10. 如何在多個符號鏈接中查找文件
- 11. 鏈接器鏈接正確的文件,但未能找到符號
- 12. 未找到符號 - 鏈接到hdf庫
- 13. rsync符號鏈接到php文件
- 14. 在Python中查找符號鏈接文件的文件類型
- 15. JAVA如何找到符號鏈接指向的目標文件路徑?
- 16. 如何找到指向特定文件夾的所有符號鏈接?
- 17. 如何將文件夾切換到svn中的符號鏈接
- 18. 找不到符號鏈接庫
- 19. 未找到g ++符號鏈接libruli.so
- 20. 未找到Xcode 8符號鏈接sqlite3
- 21. ACK沒有找到符號鏈接
- 22. 鏈接符號沒有找到
- 23. g ++在鏈接時找不到符號
- 24. 用Python找到壞符號鏈接
- 25. 鏈接期間未找到符號
- 26. 如何找到PWD以外的所有符號鏈接? UNIX
- 27. 如何找到引用目錄的所有符號鏈接?
- 28. htaccess的 - 創建文件夾的符號鏈接到HTML文件
- 29. 如何找到給定的文件是一個符號(軟)鏈接或硬鏈接
- 30. 如何找到指向另一個符號鏈接的圖標的符號鏈接
謝謝,我希望避免掃描整個文件系統,但我很感激代碼:-) – Eric 2010-11-09 22:34:04