You are here iC Home > Perl > Perl for Sysad's > Delete accident files

Perl

6.9 Delete accident files

09.05.2008
6.8 Delete old files (cleanup.pl) [  up  ] - [ a - z ] - [ search PC ] - [ top ] 6.10 wikisync.pl

Unlink created file by accident like «^?» which you can't delete at the bash prompt.

Download → files/unlink pl.txt
#!/usr/bin/perl -w
use strict;

use Date::Manip;

my $DELFILE = '^?';
my $DELFILE_MTIME = '2006042412:40:09';

opendir(D, ".") or die $!;

my $time = time();

my $deleted_counter = 0;

while (my $f = readdir(D)) {
	next if $f =~ /^\./;
	next if -d $f;

	my ($atime, $mtime, $ctime) = (stat($f))[8..10];
	$mtime ||= 0;
	my $age_hours = ($time - $mtime) / 3600 || 0;
	my $age_days  = int($age_hours / 24);

	my $date = &ParseDateString("epoch $mtime");

	print "- \"$f\" \t($date)\n";

	if ($f eq $DELFILE) {
		print "-- Deleting \"$f\"\...\n";
		sleep 2;
		#unlink $f;
		$deleted_counter++;
		rename $f, "zz_trash_$deleted_counter" or print STDERR $!;
		print "-- done.\n";
	}
	elsif ($date eq $DELFILE_MTIME) {
		print "-- Deleting \"$f\"\...\n";
		sleep 2;
		#unlink $f;
		$deleted_counter++;
		rename $f, "zz_trash_$deleted_counter" or print STDERR $!;
		print "-- done.\n";
	}
}

closedir(D);

print "$deleted_counter files have been deleted.\n";




See also:
Cleanup


Advanced search tips
6.8 Delete old files (cleanup.pl) [  up  ] - [ top ] 6.10 wikisync.pl



[ home ] - [ search ] - [ feedback ]

copyright by reto - created with mytexi