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

Ste*_*ven 22 perl

我只有一个文件名,myfile.txt我不知道它保存在哪里.如何获得存储文件的确切完整路径.我试过了

$string=`ls /abc/def/*/*/*/*/myfile.txt`;
Run Code Online (Sandbox Code Playgroud)

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

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

rai*_*7ow 23

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

  use File::Spec;
  ...
  my $rel_path = 'myfile.txt';
  my $abs_path = File::Spec->rel2abs( $rel_path ) ;
Run Code Online (Sandbox Code Playgroud)

...如果你真的需要在你的目录中搜索该文件,那就是File :: Find ...但是我可能会使用shell find / -name myfile.txt -print命令.


Lip*_*ngo 17

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

#!/usr/bin/perl 
use Cwd;
my $dir = getcwd;
use Cwd 'abs_path';
my $abs_path = abs_path($file);
Run Code Online (Sandbox Code Playgroud)

  • 这会产生一个绝对路径,但它仍然可能包含符号链接; 例如,您最终可能没有指向文件所在文件系统的根安装点的路径. (4认同)