防止 mv 覆盖同名的较大文件

防止 mv 覆盖同名的较大文件

我需要从目录中移动所有文件,丢弃目录结构。

不幸的是,有些文件有相同的文件名(缩略图)。我正在寻找类似这样的文件:

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

如何防止在此过程中覆盖较大的文件?

答案1

创建mymv.plPerl 脚本:

#!/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);
}

然后,将行更改为

find /tmp/dirtree -type f -exec perl mymv.pl {} \;

相关内容