Evita que o mv sobrescreva o arquivo maior com o mesmo nome

0

Eu preciso mover todos os arquivos de um diretório, descartando a estrutura de diretórios.

Infelizmente, alguns arquivos têm o mesmo nome de arquivo (Miniaturas). Eu estou procurando por smth. assim:

find /tmp/dirtree -type f -exec mv -i {} . \;

Como posso evitar a substituição de arquivos maiores durante o processo?

    
por mate64 26.10.2012 / 12:40

1 resposta

2

Crie o script mymv.pl Perl:

#!/usr/bin/perl
use File::Copy;
$file = shift;
($name = $file) =~ s#.*/##;
if (-f $name and -s $file < -s $name) {
     warn "$name not moved";
} else {
     move($file, $name);
}

Em seguida, mude a linha para

find /tmp/dirtree -type f -exec perl mymv.pl {} \;
    
por 26.10.2012 / 13:02