renomear todos os arquivos com estrutura semelhante ao mesmo nome

1

Eu tenho muitos arquivos em subpastas. Todos eles parecem em. *. Irradiar, onde * é apenas um número.

Existe uma maneira de renomear todos eles com um único comando para apenas in.radiate?

Ou no linux ou no MATLAB?

    
por Jackson Hart 23.04.2015 / 23:40

1 resposta

1

Se houver uma maneira mais fácil, não sei, mas aqui está um script em Perl simples que fará o trabalho para você:

#!/usr/bin/perl
use warnings;
use strict;

my $oldname = '*.radiate';   # Pattern of old filename. Edit if desired.
my $newname = 'in.radiate';  # New filename. Edit if desired.

foreach my $folder1 (glob("*"))
{
    if (-d $folder1)
    {
        foreach my $folder2 (glob("$folder1/*"))
        {
            if (-d "$folder2")
            {
                print "Processing $folder2\n";
                system("mv $folder2/$oldname $folder2/$newname");
            }
        }
    }
}

Cole isso em um arquivo chamado, por exemplo, rename.pl no diretório onde estão todos os subdiretórios e execute-o com perl rename.pl .

Ele tem um bug / recurso no qual ele avisa se a pasta que está sendo processada não contém um arquivo .radiate .

Provavelmente, há muitas maneiras mais curtas de fazer isso, mas isso deve ser legível o suficiente para "qualquer pessoa" editar, se necessário.

EDITAR: Atualizado para percorrer subdiretórios de subdiretórios, pois eu interpretei mal a pergunta original. Testado na minha máquina, e funciona como pretendido no Linux Mint 17 com perl 5.18.2

    
por 23.04.2015 / 23:58

Tags