$ rm -rf /home/backup/????/??/??/foo/bar日付ディレクトリがたくさんあると、引数が長くなりすぎて shell で実
$ pdumpfsrm /home/backup/2003/04/01/foo/bar"2003/04/01" と指定してあるけど、これは消したいディレクトリ or ファイルをシェルの補完機能で指定しやすくするため。内部ではここはワイルドカードになる。
#!/usr/bin/env perl(改定: 2003-08)
use strict;
use File::Path;
my $target = shift @ARGV;
my ($path, $post) = ($target =~ m|^(.*)\d{4}/\d\d/\d\d/(.+)$|);
traverse($path, 0, $post);
sub traverse {
my ($path, $depth, $postdir) = @_;
if ($depth == 3) {
$path .= "/".$postdir;
return unless -e $path;
print "$path\n";
rmtree $path;
return;
}
opendir(DIR, $path) or die;
my @dirs = grep {/^\d/} readdir(DIR);
close(DIR);
foreach (@dirs) {
traverse("$path/$_", $depth + 1, $postdir);
}
}