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...がありますが、find / -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 に答える