Скопируйте папку, перезаписывающую ТОЛЬКО меньшие по размеру файлы в пункте назначения

POSIXly:

$ sed -e '/<!--/{
  $!N
  s/.*on //
}' <in >out
2
16.01.2019, 12:48
1 ответ

Оператор Perl-s спешит на помощь!

Создать исполняемый Perl-скриптoverwrite-smaller:

#!/bin/perl
use warnings;
use strict;
use File::Copy;

my $file = shift;
(my $compressed = $file) =~ s/original/compressed/;
copy($compressed, $file) if -s $compressed < -s $file;

И запустить его для каждого файла в исходном каталоге:

find /home/user/original -type f -exec overwrite-smaller {} \;

Или, оказавшись в Perl, напишите также и поддерево, идущее туда:

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

use File::Copy;
use File::Find;

find({no_chdir => 1,
      wanted   => sub {
          my $file = $File::Find::name;
          -f $file or return;
          (my $compressed = $file) =~ s/original/compressed/;
          copy($compressed, $file) if -s $compressed < -s $file;
    }}, 'original');
2
27.01.2020, 22:02

Теги

Похожие вопросы