#!/usr/bin/perl -s # Usage: $0 [-debug] [-noaction] dir-name [regexp] # checks whether only files matching regexp are contained in # dir-name and removes the directory if this is the case. # -debug prints out what it does # -noaction suppresses the deletion $debug = 0 unless $debug; $noaction = 0 unless $noaction; sub usage { print STDERR "Usage: $0 [-debug] [-noaction] dir-name [regexp]\n"; } if ($#ARGV >= 0) { $dir_name = shift; } else { &usage; exit 1; } if ($#ARGV < 0) { $regexp = "^(\\.zipped|\\.cache|\\.cache\\+|00Contents|00Description)\$"; } elsif ($#ARGV == 0) { $regexp = shift; } else { &usage; exit 1; } opendir(DIR,$dir_name) || die "Cannot open directory `$dir_name'. Reason: $!"; @all_files = grep(! /^\.\.?$/,readdir(DIR)); # exclude . and .. closedir(DIR); @files = grep(! /$regexp/,@all_files); if ($#files < 0) { print "Empty directory: $dir_name\n"; &deldir; } exit 0; sub deldir { # system "ls -lA $dir_name"; # return; foreach $file (@all_files) { $debug && print "unlink($dir_name/$file)\n"; $noaction || unlink("$dir_name/$file") || die "Could not unlink file `$dir_name/$file'! Reason: $!\n"; } $debug && print "rmdir($dir_name)\n"; $noaction || rmdir($dir_name) || "Could not rmdir directory `$dir_name'! Reason: $!\n"; }