如何在perl中获取文件的确切完整路径

时间:2012-09-05 23:38:29

标签: perl

我只有myfile.txt的文件名,我不确定它的保存位置。如何获得存储文件的确切完整路径。 我试过了

$string=`ls /abc/def/*/*/*/*/myfile.txt`;

结果:完整路径为/abc/def/ghi/jkl/mno/pqr/myfile.txt

我可以使用上面的perl脚本运行shell command来获取完整路径。但是,这需要很长时间才能返回路径。有没有办法通过使用perl找到文件的完整路径?

4 个答案:

答案 0 :(得分:19)

好吧,如果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命令。

答案 1 :(得分:16)

您应该使用Perl模块Cwd来完成此任务。该链接有一个例子,如下所示。

#!/usr/bin/perl 
use Cwd;
my $dir = getcwd;
use Cwd 'abs_path';
my $abs_path = abs_path($file);

答案 2 :(得分:4)

我们可以从系统的任何地方查看,但在这种情况下,我们从“/ abc / def”文件夹中查找。

$start_path = "/abc/def/";
@files = <$start_path*/myfile.txt>

foreach $file(@files) {
    print $file; # prints full path of file.
}

我知道帖子是在一年前制作的,但有些人可能仍然会关注这个问题。

答案 3 :(得分:-1)

在Linux中使用pwd代替cd来获取没有功能的当前目录的路径,

$path='cd';
$path =~ tr /\\/\//;
chomp($path);
print "$path";