我只有一個文件名是myfile.txt
,我不確定它在哪裏保存。我如何得到存儲文件的確切完整路徑。 我試圖如何獲得perl文件的確切完整路徑
$string=`ls /abc/def/*/*/*/*/myfile.txt`;
結果:完整路徑是/abc/def/ghi/jkl/mno/pqr/myfile.txt
我能夠通過使用上述perl腳本運行shell command
獲得的完整路徑。然而,這需要很長時間才能返回路徑。有沒有辦法通過使用perl來查找文件的完整路徑?
我只有一個文件名是myfile.txt
,我不確定它在哪裏保存。我如何得到存儲文件的確切完整路徑。 我試圖如何獲得perl文件的確切完整路徑
$string=`ls /abc/def/*/*/*/*/myfile.txt`;
結果:完整路徑是/abc/def/ghi/jkl/mno/pqr/myfile.txt
我能夠通過使用上述perl腳本運行shell command
獲得的完整路徑。然而,這需要很長時間才能返回路徑。有沒有辦法通過使用perl來查找文件的完整路徑?
好吧,如果myfile.txt
實際上是該文件的相對路徑,有應該是一個核心模塊子 - File::Spec->rel2abs():
use File::Spec;
...
my $rel_path = 'myfile.txt';
my $abs_path = File::Spec->rel2abs($rel_path) ;
...如果你確實需要通過你的目錄,該文件搜索,那裏有File :: Find ...但是我可能會用shell find/-name myfile.txt -print
命令。
您應該使用Perl模塊Cwd來完成此操作。該鏈接的例子也在下面看到。
#!/usr/bin/perl
use Cwd;
my $dir = getcwd;
use Cwd 'abs_path';
my $abs_path = abs_path($file);
這會產生一個絕對路徑,但它可能仍然包含符號鏈接;例如您可能不會得到指向文件所在文件系統根目錄的路徑。 – reinierpost
我們可以看看從系統上的任何地方,但在這種情況下,我們從「/ ABC/DEF」文件夾中尋找。
$start_path = "/abc/def/";
@files = <$start_path*/myfile.txt>
foreach $file(@files) {
print $file; # prints full path of file.
}
我知道帖子是在一年前發佈的,但有些人可能仍然會看這個問題。
請定義「完整路徑」。一個文件可能有多個文件。它可能包括符號鏈接? – reinierpost