Подтвердить что ты не робот

Как получить полный полный путь к файлу в perl

У меня есть только имя файла myfile.txt, и я не уверен, где он сохраняется. Как я могу получить полный полный путь, где хранится файл. Я пробовал

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

Результат: Полный путь /abc/def/ghi/jkl/mno/pqr/myfile.txt

Я могу получить полный путь, запустив shell command, используя perl script выше. Однако для возврата пути потребовалось очень много времени. Это любой способ найти полный путь к файлу с помощью perl?

4b9b3361

Ответ 1

Хорошо, если 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 мог бы быть вероятно.

Ответ 2

Для этого вы должны использовать модуль Perl Cwd. Пример ссылки также приведен ниже.

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

Ответ 3

Мы можем смотреть из любой точки системы, но в этом случае мы смотрим из папки "/abc/def".

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

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

Я знаю, что пост был сделан год назад, но некоторые могут по-прежнему смотреть на этот вопрос.