Rotacionando um arquivo

1

Eu tenho um aplicativo que grava em um arquivo. Antes de executar o aplicativo, gostaria de girar o arquivo. Em outros, mova file.n para file.n + 1 file para file.1.

Eu posso escrever um script para fazer isso, mas eu queria saber se existe uma maneira mais simples de fazer isso?

    
por Mouse.The.Lucky.Dog 26.03.2014 / 13:20

1 resposta

3

I can write a script to do this

Aqui está a versão perl, se você quiser economizar algum tempo:

#!/usr/bin/perl
use strict;
use warnings FATAL => qw(all);

# Rotate files (file -> file.1, file.1 -> file.2, etc).

if ($#ARGV < 0 || !-e -w $ARGV[0] || index($ARGV[0], '/') != -1) {
        print "Existing file basename required\n";
        exit 1;
}

my $name = $ARGV[0];

opendir my $dh, './';
my @files = ();
my $last = 0;
while (readdir $dh) {
        next if !($_ =~ m/^$name\.(\d+)$/);
        $last = $1 if $1 > $last;
}
close $dh;

for (my $i = $last; $last > 0; $last--) {
        rename "$name.$i", "$name.".($i + 1);
}

rename $name, "$name.1";

Você só pode usar isso em arquivos no diretório de trabalho atual. por exemplo:

rotate whatever.file

Se houver um caminho de qualquer tipo anexado, isso causará um erro. Não seria difícil modificar para permitir caminhos, no entanto.

Além disso, se houver um whatever.file.0 , ele será ignorado (os arquivos que ele produz serão numerados a partir de 1).

    
por 26.03.2014 / 14:39

Tags