디렉토리 안의 모든 파일들을 일일이 심볼릭 링크를 걸고 싶을 때 Perl을 이용해서 하는 방법이다.(절대 경로를 준다면 cp -sR 옵션으로 줄 수도 있지만..)
다음을 link.pl 등의 이름으로 저장한다.
use File::Find;
$src = shift; # first arg is source
$dst = shift; # second arg is dest
find(sub {
(my $rel_name = $File::Find::name)
=~ s!.*/\./!!s;
my $src_name = “$src/$rel_name”;
my $dst_name = “$dst/$rel_name”;
if (-d) {
print “mkdir $dst_name\n”;
mkdir $dst_name, 0777
or warn “mkdir $dst_name: $!”;
} else {
print “ln -s $src_name $dst_name\n”;
symlink $src_name, $dst_name
or warn “symlink $src_name $dst_name: $!”;
}
}, “$src/./”);
$src = shift; # first arg is source
$dst = shift; # second arg is dest
find(sub {
(my $rel_name = $File::Find::name)
=~ s!.*/\./!!s;
my $src_name = “$src/$rel_name”;
my $dst_name = “$dst/$rel_name”;
if (-d) {
print “mkdir $dst_name\n”;
mkdir $dst_name, 0777
or warn “mkdir $dst_name: $!”;
} else {
print “ln -s $src_name $dst_name\n”;
symlink $src_name, $dst_name
or warn “symlink $src_name $dst_name: $!”;
}
}, “$src/./”);
perl link.pl <SRC PATH> <DST PATH> 로 한다.
<DST PATH> 는 mkdir로 만들어 놓고 해야 한다.