Как сделать символическую ссылку между файлами в папках, используя Perl? - PullRequest
1 голос
/ 12 июня 2019

вот сценарий.

I have dir1-->file1
          |-->file2
          |-->subdir1--->file3
          |         |---> file4 
          | 
          |-->file1
          |-->subdir2-->file6

также dir2 другое дерево файлов ...

Мне нужно создать символическую ссылку над файлом в / path / dir1 и / path / dir2 на вызов anthor path / newpath / dir1 и / newpath/dir2..

возможно ли это?

Пока я пробовал ниже

#!/usr/bin/perl

use strict;
use File::Find qw(find);
my $path = "path";


find(\&Search, $path);

sub Search{
    my $filename = $File::Find::name;

    if(-f $filename){
     symlink("$filename", "path2");
     }
     }

Ответы [ 2 ]

2 голосов
/ 12 июня 2019
symlink($filename, "path2/" . $_);

Должен сделать свое дело.Всегда предполагая, что "path2" - это каталог, в котором вы хотите разместить ссылки.

0 голосов
/ 13 июня 2019

Наконец, я пошел по методу ниже.

    my $dir = "/path/";
    my $smlinkdir = "/smlink/path/";
    chdir($smlinkdir) or die "Cant chdir to $smlinkdir $!";
    if(-d $smlinkdir) {
    system(cp, '--recursive', '--preserve=all', '--no-dereference', '--symbolic-link', "$dir", "$smlinkdir");
    } else {
    exit 1
    }

это сработало также, и я пошел с этим, так как это дает ожидаемый результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...