26

我只有一个文件名,myfile.txt我不确定它保存在哪里。如何获得存储文件的确切完整路径?

我努力了

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

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

shell command我可以通过使用上面的 Perl 脚本运行来获得完整路径。然而,这需要很长时间才能返回路径。这是一种使用 Perl 查找文件完整路径的方法吗?

4

4 回答 4

29

好吧,如果myfile.txt实际上是该文件的相对路径,则有一个核心模块子 - File::Spec->rel2abs()

  use File::Spec;
  ...
  my $rel_path = 'myfile.txt';
  my $abs_path = File::Spec->rel2abs( $rel_path ) ;

...如果您确实需要在目录中搜索该文件,则可以使用 File::Find... 但我可能会使用 shellfind / -name myfile.txt -print命令。

于 2012-09-05T23:48:07.863 回答
23

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

#!/usr/bin/perl 
use Cwd;
my $dir = getcwd;
use Cwd 'abs_path';
my $abs_path = abs_path($file);
于 2012-09-05T23:59:42.677 回答
3

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

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

foreach $file(@files) {
    print $file; # Prints the full path of the file.
}
于 2014-01-24T09:36:12.017 回答
-5

在Linux中使用pwd而不是cd获取当前目录的路径没有功能,

$path='cd';
$path =~ tr /\\/\//;
chomp($path);
print "$path";
于 2019-01-14T05:53:08.207 回答