1 |
#!/usr/local/bin/perl -w |
#!/usr/local/bin/perl -w |
2 |
|
|
3 |
use English; |
use English; |
4 |
|
use strict; |
5 |
|
|
6 |
my @dirs = ("/data/corp_html"); |
my @dirs = @ARGV; |
7 |
|
|
8 |
while (@dirs) { |
while (@dirs) { |
9 |
my $curr_dir=shift @dirs; |
my $curr_dir=shift @dirs; |
18 |
close(I); |
close(I); |
19 |
} |
} |
20 |
print STDERR "ignore: ",join("|",@ignore); |
print STDERR "ignore: ",join("|",@ignore); |
21 |
@clutter = readdir(DIR); |
my @clutter = readdir(DIR); |
22 |
foreach my $file (@clutter) { |
foreach my $file (@clutter) { |
23 |
if (-l "$curr_dir/$file" && grep(/^\Q$file\E$/,@ignore) == 0) { |
if (-l "$curr_dir/$file" && grep(/^\Q$file\E$/,@ignore) == 0) { |
24 |
my $dest=readlink("$curr_dir/$file"); |
my $dest=readlink("$curr_dir/$file"); |
25 |
$dest="$curr_dir/$dest" if (substr($dest,0,1) ne "/"); |
$dest="$curr_dir/$dest" if (substr($dest,0,1) ne "/"); |
26 |
print "ln -sf $dest $curr_dir/$file\n"; |
print "ln -sf $dest $curr_dir/$file\n"; |
27 |
} elsif ((-f "$curr_dir/$file" || -d "$curr_dir/$file") && grep(/^\Q$file\E$/,@ignore) == 0) { |
} elsif ((-f "$curr_dir/$file" || -d "$curr_dir/$file") && grep(/^\Q$file\E$/,@ignore) == 0 && -r "$curr_dir/$file") { |
28 |
my (undef,undef,$mode,undef,$uid,$gid) = stat("$curr_dir/$file"); |
my (undef,undef,$mode,undef,$uid,$gid) = stat("$curr_dir/$file"); |
29 |
if ($uid != $UID || $gid != $GID) { |
if ( $uid != $UID || $gid != $GID ) { |
30 |
print "chown ",scalar(getpwuid($uid)),":",scalar(getpwuid($gid))," $curr_dir/$file\n"; |
print "chown ",(scalar(getpwuid($uid)) || $uid),":",(scalar(getgrgid($gid)) || $gid)," $curr_dir/$file\n"; |
31 |
printf "chmod %04o %s\n", ($mode & 07777), "$curr_dir/$file"; |
printf "chmod %04o %s\n", ($mode & 07777), "$curr_dir/$file"; |
32 |
} |
} |
33 |
push @dirs,"$curr_dir/$file" if (-d "$curr_dir/$file"); |
push @dirs,"$curr_dir/$file" if (-d "$curr_dir/$file"); |