perl
not-so-one-liner, который делает то, что звучит так, как вам нужно - группирует все файлы по дням последней модификации, а затем сортирует файлы каждого дня, чтобы получить все, кроме первого и последнего, каждого дня.
perl -MPOSIX=strftime -E '
for (glob "*.txt") { # Adjust pattern as needed
my $mtime = (stat)[9];
push @{$files{strftime("%Y-%m-%d", localtime $mtime)}}, [ $_, $mtime ]
}
for (values %files) {
my @files = map { $_->[0] } sort { $a->[1] <=> $b->[1] } @$_;
if (@files > 2) { say for @files[1..$#files-1] }
}'
После того, как вы проверите и убедитесь, что он печатает только те файлы, которые вы хотите удалить, замените say for
на unlink
, чтобы фактически удалить их.