Programa para agrupar arquivos de uma pasta grande em vários menores?

0

Nós temos um sistema aqui que recentemente teve uma falha no disco rígido. Eu era capaz de usar o software de recuperação para obter a maioria dos arquivos fora dele, mas não foi capaz de recuperar nomes de pastas para a maior parte. Em vez disso, despejou quase tudo (cerca de 200.000 arquivos!) Em uma pasta. Isso é morte para o sistema de arquivos do Windows.

Alguém pode recomendar um bom programa (de preferência gratuito) para classificar automaticamente esses arquivos em novas pastas?

Nesse caso, os arquivos já estão pelo menos agrupados por tipo. Eu estava pensando em classificar por qualquer nome, ou data de criação / modificação e, em seguida, nome.

    
por Joel Coehoorn 27.01.2010 / 18:56

3 respostas

3

Depende de como você deseja classificá-los. Eles são todos tipos diferentes? A linha de comando é muito útil para isso.

exemplo:

C:\>mkdir JPEGS writtendocs spreadsheets
C:\>cd huge_folder
C:\huge_folder\>move *.jpg ../JPEGS
C:\huge_folder\>move *.doc ../writtendocs
C:\huge_folder\>move *.xls ../spreadsheets

Existe uma ferramenta gráfica gratuita para realizar operações semelhantes, adequadamente denominada File Sort , que pode ajudá-lo a classificar por nome de arquivo, idade e tamanho:

    
por 27.01.2010 / 19:07
0

Aqui está um script perl completamente não testado :) para classificar com base no primeiro caractere no nome do arquivo

use File::Copy;

# base directory of where we want to copy files
my $destdir = "destdir";

opendir("dir_to_sort", DH);
my @files = readdir(DH);
closedir(DH);
foreach my $file (@files)
{
   # skip . and ..
   next if $file =~ /^\.$/;
   next if $file =~ /^\.\.$/;

   # This is where you'd figure out where you want to put the file
   # in this example we're just looking at the first char.
   # so a file named "HelloWorld" would be copied to $destdir/H/HelloWorld
   # pull the first char
   $file =~ /^(.).*/;
   my $target_dir = $1;

   mkdir("$destdir/$target_dir") unless -d "$destdir/$target_dir"

   # you could use move instead of copy here
   copy($file, "$destdir/$target_dir/$file");
}
Realmente, isso é totalmente não testado, se você perder tudo ao executar isso, não reclame eu não avisei você. :)

    
por 27.01.2010 / 19:21