我只有myfile.txt
的文件名,我不确定它的保存位置。如何获得存储文件的确切完整路径。
我试过了
$string=`ls /abc/def/*/*/*/*/myfile.txt`;
结果:完整路径为/abc/def/ghi/jkl/mno/pqr/myfile.txt
我可以使用上面的perl脚本运行shell command
来获取完整路径。但是,这需要很长时间才能返回路径。有没有办法通过使用perl找到文件的完整路径?
答案 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";