Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 5 May 2023 08:51:37 +0100
From:      Kaya Saman <kayasaman@optiplex-networks.com>
To:        Paul Procacci <pprocacci@gmail.com>
Cc:        freebsd-questions@freebsd.org
Subject:   Re: Tool to compare directories and delete duplicate files from one directory
Message-ID:  <f226ca70-4cd2-b473-d90c-493d1640070c@optiplex-networks.com>
In-Reply-To: <CAFbbPug8npwyxjzxB20wV%2BmHpqovoCwPyx1p89GRSKDWhA_qcQ@mail.gmail.com>
References:  <9887a438-95e7-87cc-a162-4ad7a70d744f@optiplex-networks.com> <CAFbbPugfhXGPfscKpx6B0ue=DcF_qssL6P-0GgB1CWKtm3U=tQ@mail.gmail.com> <344b29c6-3d69-543d-678d-c2433dbf7152@optiplex-networks.com> <CAFbbPuiNqYLLg8wcg8S_3=y46osb06%2BduHqY9f0n=OuRgGVY=w@mail.gmail.com> <ef0328b0-caab-b6a2-5b33-1ab069a07f80@optiplex-networks.com> <CAFbbPujUALOS%2BsUxsp=54vxVAHe_jkvi3d-CksK78c7rxAVoNg@mail.gmail.com> <7747f587-f33e-f39c-ac97-fe4fe19e0b76@optiplex-networks.com> <CAFbbPuhoMOM=wp26yZ42e9xnRP%2BtJ6B30y8%2BBa3eCBh2v66Grw@mail.gmail.com> <fd9aa7d3-f6a7-2274-f970-d4421d187855@optiplex-networks.com> <CAFbbPujpPPrm-axMC9S5OnOiYn2oPuQbkRjnQY4tp=5L7TiVSg@mail.gmail.com> <eda13374-48c1-1749-3a73-530370934eff@optiplex-networks.com> <CAFbbPujbyPHm2GO%2BFnR0G8rnsmpA3AxY2NzYOAAXetApiF8HVg@mail.gmail.com> <b4ac4aea-a051-fbfe-f860-cd7836e5a1bb@optiplex-networks.com> <CAFbbPug8npwyxjzxB20wV%2BmHpqovoCwPyx1p89GRSKDWhA_qcQ@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.
--------------SiM7Cf9U9LS10HeJGopQNN7n
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: quoted-printable

Paul, that's fantastic!! Thank you so much!

It works!!


Now to test on the live system... guess I should take a zfs snapshot=20
before messing around with things :-)


I really appreciate this :-D


Best regards,


Kaya


On 5/5/23 08:01, Paul Procacci wrote:
>
>
>
> On Fri, May 5, 2023 at 12:06=E2=80=AFAM Kaya Saman=20
> <kayasaman@optiplex-networks.com> wrote:
>
>
>     On 5/5/23 04:36, Paul Procacci wrote:
>     > #!/usr/bin/env perl
>     >
>     > use strict;
>     > use warnings;
>     >
>     > sub msgDie
>     > {
>     > =C2=A0 my ($ret) =3D shift;
>     > =C2=A0 my ($msg) =3D shift // "$0 dir_base dir\n";
>     > =C2=A0 print $msg;
>     > =C2=A0 exit($ret);
>     > }
>     >
>     > msgDie(1) unless(scalar @ARGV eq 2);
>     >
>     > my $base =3D $ARGV[0];
>     > my $dir =C2=A0=3D $ARGV[1];
>     >
>     > msgDie(1, "base directory doesn't exist\n") unless -d $base;
>     > msgDie(1, "source directory doesn't exist\n") unless -d $dir;
>     >
>     > opendir(my $dh, $dir) or msgDie("Unable to open directory: $dir\n=
");
>     > while(readdir $dh)
>     > {
>     > =C2=A0 next if($_ eq '.' || $_ eq '..');
>     > =C2=A0 next if(! -f "$base/$_");
>     >
>     > =C2=A0 my ($ref) =3D (stat("$base/$_"))[7];
>     > =C2=A0 my ($src) =3D (stat("$dir/$_"))[7];
>     > =C2=A0 unlink("$dir/$_") if($ref =3D=3D $src);
>     > }
>
>
>     To start with this is the directory structure:
>
>
>     =C2=A0=C2=A0ls -lhR /tmp/test1
>     total 1
>     drwxr-xr-x=C2=A0 2 root=C2=A0 wheel=C2=A0=C2=A0=C2=A0=C2=A0 3B May=C2=
=A0 5 04:57 dupdir1
>     drwxr-xr-x=C2=A0 2 root=C2=A0 wheel=C2=A0=C2=A0=C2=A0=C2=A0 3B May=C2=
=A0 5 04:57 dupdir2
>
>     /tmp/test1/dupdir1:
>     total 1
>     -rw-r--r--=C2=A0 1 root=C2=A0 wheel=C2=A0=C2=A0=C2=A0=C2=A0 8B Apr =
30 03:17 dup
>
>     /tmp/test1/dupdir2:
>     total 1
>     -rw-r--r--=C2=A0 1 root=C2=A0 wheel=C2=A0=C2=A0=C2=A0=C2=A0 7B May=C2=
=A0 5 03:23 dup1
>
>
>     ls -lhR /tmp/test2
>     total 1
>     drwxr-xr-x=C2=A0 2 root=C2=A0 wheel=C2=A0=C2=A0=C2=A0=C2=A0 3B May=C2=
=A0 5 04:56 dupdir1
>     drwxr-xr-x=C2=A0 2 root=C2=A0 wheel=C2=A0=C2=A0=C2=A0=C2=A0 3B May=C2=
=A0 5 04:56 dupdir2
>
>     /tmp/test2/dupdir1:
>     total 1
>     -rw-r--r--=C2=A0 1 root=C2=A0 wheel=C2=A0=C2=A0=C2=A0=C2=A0 4B Apr =
30 02:53 dup
>
>     /tmp/test2/dupdir2:
>     total 1
>     -rw-r--r--=C2=A0 1 root=C2=A0 wheel=C2=A0=C2=A0=C2=A0=C2=A0 7B Apr =
30 02:47 dup1
>
>
>     So what I want to happen is the script to recurse from the top leve=
l
>     directories test1 and test2 then expected behavior should be to
>     remove
>     file dup1 as dup is different between directories.
>
>
>     I ran the script and again it didn't produce any output?
>
>     ./test.pl <http://test.pl>; /tmp/test1 /tmp/test2
>
>
>     I'm not sure if I need any other perl module? It is installed:
>
>     p5-ExtUtils-Config-0.008_1=C2=A0=C2=A0=C2=A0=C2=A0 Wrapper for perl=
 configuration
>     perl5-5.32.1_3=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 Practical Extraction and Repor=
t
>     Language
>
>
>     I have many p5- modules too installed but maybe I don't have the
>     right
>     ones to run the script?
>
>
>
>
> - My script doesn't have any output.
> - My script doesn't recurse directories.
> - My script requires no modules.
> - You just need perl5 installed.
>
> So you want something like this:
>
> % find test* -type f -ls
> 131318 =C2=A0 =C2=A0 =C2=A0 =C2=A09 -rwxr-xr-x =C2=A0 =C2=A01 pprocacci=
 =C2=A0 =C2=A0pprocacci =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0=20
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 763 May =C2=A05 06:58 test.pl=
 <http://test.pl>;
> 132503 =C2=A0 =C2=A0 =C2=A0 =C2=A09 -rw-r--r-- =C2=A0 =C2=A01 pprocacci=
 =C2=A0 =C2=A0pprocacci =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0=20
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 5 May =C2=A05 06:52 te=
st1/dupdir2/dup1
> 132898 =C2=A0 =C2=A0 =C2=A0 =C2=A09 -rw-r--r-- =C2=A0 =C2=A01 pprocacci=
 =C2=A0 =C2=A0pprocacci =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0=20
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 8 May =C2=A05 06:51 te=
st1/dupdir1/dup
> 132771 =C2=A0 =C2=A0 =C2=A0 =C2=A09 -rw-r--r-- =C2=A0 =C2=A01 pprocacci=
 =C2=A0 =C2=A0pprocacci =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0=20
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 4 May =C2=A05 06:52 te=
st2/dupdir1/dup
> 133006 =C2=A0 =C2=A0 =C2=A0 =C2=A09 -rw-r--r-- =C2=A0 =C2=A01 pprocacci=
 =C2=A0 =C2=A0pprocacci =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0=20
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 5 May =C2=A05 06:52 te=
st2/dupdir2/dup1
>
> And after the run of the perl script like so:
> % ./test.pl <http://test.pl>; test1 test2
>
> You want it to be like this:
>
> % find test* -type f -ls
> 131318 =C2=A0 =C2=A0 =C2=A0 =C2=A09 -rwxr-xr-x =C2=A0 =C2=A01 pprocacci=
 =C2=A0 =C2=A0 =C2=A0pprocacci =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0=20
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 763 May =C2=A05 06:58 =
test.pl <http://test.pl>;
> 132503 =C2=A0 =C2=A0 =C2=A0 =C2=A09 -rw-r--r-- =C2=A0 =C2=A01 pprocacci=
 =C2=A0 =C2=A0 =C2=A0pprocacci =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0=20
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 5 May =C2=A05 0=
6:52 test1/dupdir2/dup1
> 132898 =C2=A0 =C2=A0 =C2=A0 =C2=A09 -rw-r--r-- =C2=A0 =C2=A01 pprocacci=
 =C2=A0 =C2=A0 =C2=A0pprocacci =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0=20
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 8 May =C2=A05 0=
6:51 test1/dupdir1/dup
> 132771 =C2=A0 =C2=A0 =C2=A0 =C2=A09 -rw-r--r-- =C2=A0 =C2=A01 pprocacci=
 =C2=A0 =C2=A0 =C2=A0pprocacci =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0=20
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 4 May =C2=A05 0=
6:52 test2/dupdir1/dup
>
> If so:
>
> ####################################################
> #!/usr/bin/env perl
>
> use strict;
> use warnings;
>
> sub msgDie
> {
> =C2=A0 my ($ret) =3D shift;
> =C2=A0 my ($msg) =3D shift // "$0 dir_base dir\n";
> =C2=A0 print $msg;
> =C2=A0 exit($ret);
> }
>
> sub doit
> {
> =C2=A0 my($base, $cur) =3D @_;
>
> =C2=A0 opendir(my $dh, $cur) or msgDie("Unable to open directory: $cur\=
n");
> =C2=A0 while(readdir $dh)
> =C2=A0 {
> =C2=A0 =C2=A0 next if($_ eq '.' || $_ eq '..');
> =C2=A0 =C2=A0 if(-d "$cur/$_"){ doit("$base/$_", "$cur/$_"); next; }
> =C2=A0 =C2=A0 next if(! -f "$base/$_");
>
> =C2=A0 =C2=A0 my ($ref) =3D (stat("$base/$_"))[7];
> =C2=A0 =C2=A0 my ($src) =3D (stat("$cur/$_"))[7];
> =C2=A0 =C2=A0 unlink("$cur/$_") if($ref =3D=3D $src);
> =C2=A0 }
> }
>
> msgDie(1) unless(scalar @ARGV eq 2);
>
> my $base =3D $ARGV[0];
> my $dir =C2=A0=3D $ARGV[1];
>
> msgDie(1, "base diretory doesn't exist\n") unless -d $base;
> msgDie(1, "source diretory doesn't exist\n") unless -d $dir;
>
> doit($base, $dir);
> ####################################################
>
> ~Paul
>
> --=20
> __________________
>
> :(){ :|:& };:
--------------SiM7Cf9U9LS10HeJGopQNN7n
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<html>
  <head>
    <meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3DUTF=
-8">
  </head>
  <body>
    <p>Paul, that's fantastic!! Thank you so much!</p>
    <p>It works!!</p>
    <p><br>
    </p>
    <p>Now to test on the live system... guess I should take a zfs
      snapshot before messing around with things :-)</p>
    <p><br>
    </p>
    <p>I really appreciate this :-D<br>
    </p>
    <p><br>
    </p>
    <p>Best regards,</p>
    <p><br>
    </p>
    <p>Kaya<br>
    </p>
    <p><br>
    </p>
    <div class=3D"moz-cite-prefix">On 5/5/23 08:01, Paul Procacci wrote:<=
br>
    </div>
    <blockquote type=3D"cite"
cite=3D"mid:CAFbbPug8npwyxjzxB20wV+mHpqovoCwPyx1p89GRSKDWhA_qcQ@mail.gmai=
l.com">
      <meta http-equiv=3D"content-type" content=3D"text/html; charset=3DU=
TF-8">
      <div dir=3D"ltr">
        <div>
          <div dir=3D"ltr"><br>
            <div><br>
            </div>
          </div>
          <br>
          <div class=3D"gmail_quote">
            <div dir=3D"ltr" class=3D"gmail_attr">On Fri, May 5, 2023 at
              12:06=E2=80=AFAM Kaya Saman &lt;<a
                href=3D"mailto:kayasaman@optiplex-networks.com"
                moz-do-not-send=3D"true" class=3D"moz-txt-link-freetext">=
kayasaman@optiplex-networks.com</a>&gt;
              wrote:<br>
            </div>
            <blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px
              0.8ex;border-left:1px solid
              rgb(204,204,204);padding-left:1ex"><br>
              On 5/5/23 04:36, Paul Procacci wrote:<br>
              &gt; #!/usr/bin/env perl<br>
              &gt;<br>
              &gt; use strict;<br>
              &gt; use warnings;<br>
              &gt;<br>
              &gt; sub msgDie<br>
              &gt; {<br>
              &gt; =C2=A0 my ($ret) =3D shift;<br>
              &gt; =C2=A0 my ($msg) =3D shift // "$0 dir_base dir\n";<br>
              &gt; =C2=A0 print $msg;<br>
              &gt; =C2=A0 exit($ret);<br>
              &gt; }<br>
              &gt;<br>
              &gt; msgDie(1) unless(scalar @ARGV eq 2);<br>
              &gt;<br>
              &gt; my $base =3D $ARGV[0];<br>
              &gt; my $dir =C2=A0=3D $ARGV[1];<br>
              &gt;<br>
              &gt; msgDie(1, "base directory doesn't exist\n") unless -d
              $base;<br>
              &gt; msgDie(1, "source directory doesn't exist\n") unless
              -d $dir;<br>
              &gt;<br>
              &gt; opendir(my $dh, $dir) or msgDie("Unable to open
              directory: $dir\n");<br>
              &gt; while(readdir $dh)<br>
              &gt; {<br>
              &gt; =C2=A0 next if($_ eq '.' || $_ eq '..');<br>
              &gt; =C2=A0 next if(! -f "$base/$_");<br>
              &gt;<br>
              &gt; =C2=A0 my ($ref) =3D (stat("$base/$_"))[7];<br>
              &gt; =C2=A0 my ($src) =3D (stat("$dir/$_"))[7];<br>
              &gt; =C2=A0 unlink("$dir/$_") if($ref =3D=3D $src);<br>
              &gt; }<br>
              <br>
              <br>
              To start with this is the directory structure:<br>
              <br>
              <br>
              =C2=A0=C2=A0ls -lhR /tmp/test1<br>
              total 1<br>
              drwxr-xr-x=C2=A0 2 root=C2=A0 wheel=C2=A0=C2=A0=C2=A0=C2=A0=
 3B May=C2=A0 5 04:57 dupdir1<br>
              drwxr-xr-x=C2=A0 2 root=C2=A0 wheel=C2=A0=C2=A0=C2=A0=C2=A0=
 3B May=C2=A0 5 04:57 dupdir2<br>
              <br>
              /tmp/test1/dupdir1:<br>
              total 1<br>
              -rw-r--r--=C2=A0 1 root=C2=A0 wheel=C2=A0=C2=A0=C2=A0=C2=A0=
 8B Apr 30 03:17 dup<br>
              <br>
              /tmp/test1/dupdir2:<br>
              total 1<br>
              -rw-r--r--=C2=A0 1 root=C2=A0 wheel=C2=A0=C2=A0=C2=A0=C2=A0=
 7B May=C2=A0 5 03:23 dup1<br>
              <br>
              <br>
              ls -lhR /tmp/test2<br>
              total 1<br>
              drwxr-xr-x=C2=A0 2 root=C2=A0 wheel=C2=A0=C2=A0=C2=A0=C2=A0=
 3B May=C2=A0 5 04:56 dupdir1<br>
              drwxr-xr-x=C2=A0 2 root=C2=A0 wheel=C2=A0=C2=A0=C2=A0=C2=A0=
 3B May=C2=A0 5 04:56 dupdir2<br>
              <br>
              /tmp/test2/dupdir1:<br>
              total 1<br>
              -rw-r--r--=C2=A0 1 root=C2=A0 wheel=C2=A0=C2=A0=C2=A0=C2=A0=
 4B Apr 30 02:53 dup<br>
              <br>
              /tmp/test2/dupdir2:<br>
              total 1<br>
              -rw-r--r--=C2=A0 1 root=C2=A0 wheel=C2=A0=C2=A0=C2=A0=C2=A0=
 7B Apr 30 02:47 dup1<br>
              <br>
              <br>
              So what I want to happen is the script to recurse from the
              top level <br>
              directories test1 and test2 then expected behavior should
              be to remove <br>
              file dup1 as dup is different between directories.<br>
              <br>
              <br>
              I ran the script and again it didn't produce any output?<br=
>
              <br>
              ./<a href=3D"http://test.pl" rel=3D"noreferrer"
                target=3D"_blank" moz-do-not-send=3D"true">test.pl</a>
              /tmp/test1 /tmp/test2<br>
              <br>
              <br>
              I'm not sure if I need any other perl module? It is
              installed:<br>
              <br>
              p5-ExtUtils-Config-0.008_1=C2=A0=C2=A0=C2=A0=C2=A0 Wrapper =
for perl
              configuration<br>
              perl5-5.32.1_3=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 Practical Extraction =
and
              Report Language<br>
              <br>
              <br>
              I have many p5- modules too installed but maybe I don't
              have the right <br>
              ones to run the script?<br>
              <br>
              <br>
            </blockquote>
          </div>
          <br>
          <br clear=3D"all">
          <div>- My script doesn't have any output.<br>
            - My script doesn't recurse directories.
            <br>
            - My script requires no modules.
          </div>
          <div>- You just need perl5 installed.<br>
          </div>
          <br>
        </div>
        So you want something like this:<br>
        <div><br>
          % find test* -type f -ls<br>
          131318 =C2=A0 =C2=A0 =C2=A0 =C2=A09 -rwxr-xr-x =C2=A0 =C2=A01 p=
procacci =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0
          =C2=A0 =C2=A0pprocacci =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 763 May =C2=A05 =
06:58 <a
            href=3D"http://test.pl" moz-do-not-send=3D"true">test.pl</a><=
br>
          132503 =C2=A0 =C2=A0 =C2=A0 =C2=A09 -rw-r--r-- =C2=A0 =C2=A01 p=
procacci =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0
          =C2=A0 =C2=A0pprocacci =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 5 May =C2=
=A05 06:52
          test1/dupdir2/dup1<br>
          132898 =C2=A0 =C2=A0 =C2=A0 =C2=A09 -rw-r--r-- =C2=A0 =C2=A01 p=
procacci =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0
          =C2=A0 =C2=A0pprocacci =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 8 May =C2=
=A05 06:51
          test1/dupdir1/dup<br>
          132771 =C2=A0 =C2=A0 =C2=A0 =C2=A09 -rw-r--r-- =C2=A0 =C2=A01 p=
procacci =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0
          =C2=A0 =C2=A0pprocacci =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 4 May =C2=
=A05 06:52
          test2/dupdir1/dup<br>
          133006 =C2=A0 =C2=A0 =C2=A0 =C2=A09 -rw-r--r-- =C2=A0 =C2=A01 p=
procacci =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0
          =C2=A0 =C2=A0pprocacci =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 5 May =C2=
=A05 06:52
          test2/dupdir2/dup1<br>
          <div><br>
            And after the run of the perl script like so:<br>
            % ./<a href=3D"http://test.pl" moz-do-not-send=3D"true">test.=
pl</a>
            test1 test2<br>
            <br>
            You want it to be like this:<br>
            <br>
            % find test* -type f -ls<br>
            131318 =C2=A0 =C2=A0 =C2=A0 =C2=A09 -rwxr-xr-x =C2=A0 =C2=A01=
 pprocacci =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0
            =C2=A0 =C2=A0 =C2=A0pprocacci =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 763 Ma=
y =C2=A05 06:58
            <a href=3D"http://test.pl" moz-do-not-send=3D"true">test.pl</=
a><br>
            132503 =C2=A0 =C2=A0 =C2=A0 =C2=A09 -rw-r--r-- =C2=A0 =C2=A01=
 pprocacci =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0
            =C2=A0 =C2=A0 =C2=A0pprocacci =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 5 May =C2=A05 06:52
            test1/dupdir2/dup1<br>
            132898 =C2=A0 =C2=A0 =C2=A0 =C2=A09 -rw-r--r-- =C2=A0 =C2=A01=
 pprocacci =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0
            =C2=A0 =C2=A0 =C2=A0pprocacci =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 8 May =C2=A05 06:51
            test1/dupdir1/dup<br>
            132771 =C2=A0 =C2=A0 =C2=A0 =C2=A09 -rw-r--r-- =C2=A0 =C2=A01=
 pprocacci =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0
            =C2=A0 =C2=A0 =C2=A0pprocacci =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 4 May =C2=A05 06:52
            test2/dupdir1/dup<br>
            <br>
          </div>
          <div>If so:<br>
            <br>
            ####################################################
            <br>
            #!/usr/bin/env perl<br>
            <br>
            use strict;<br>
            use warnings;<br>
            <br>
            sub msgDie<br>
            {<br>
            =C2=A0 my ($ret) =3D shift;<br>
            =C2=A0 my ($msg) =3D shift // "$0 dir_base dir\n";<br>
            =C2=A0 print $msg;<br>
            =C2=A0 exit($ret);<br>
            }<br>
            <br>
            sub doit<br>
            {<br>
            =C2=A0 my($base, $cur) =3D @_;<br>
            <br>
            =C2=A0 opendir(my $dh, $cur) or msgDie("Unable to open direct=
ory:
            $cur\n");<br>
            =C2=A0 while(readdir $dh)<br>
            =C2=A0 {<br>
            =C2=A0 =C2=A0 next if($_ eq '.' || $_ eq '..');<br>
            =C2=A0 =C2=A0 if(-d "$cur/$_"){ doit("$base/$_", "$cur/$_"); =
next; }<br>
            =C2=A0 =C2=A0 next if(! -f "$base/$_");<br>
            <br>
            =C2=A0 =C2=A0 my ($ref) =3D (stat("$base/$_"))[7];<br>
            =C2=A0 =C2=A0 my ($src) =3D (stat("$cur/$_"))[7];<br>
            =C2=A0 =C2=A0 unlink("$cur/$_") if($ref =3D=3D $src);<br>
            =C2=A0 }<br>
            }<br>
            <br>
            msgDie(1) unless(scalar @ARGV eq 2);<br>
            <br>
            my $base =3D $ARGV[0];<br>
            my $dir =C2=A0=3D $ARGV[1];<br>
            <br>
            msgDie(1, "base diretory doesn't exist\n") unless -d $base;<b=
r>
            msgDie(1, "source diretory doesn't exist\n") unless -d $dir;<=
br>
            <br>
            doit($base, $dir);<br>
            ####################################################<br>
            <br>
          </div>
          <div>~Paul<br>
          </div>
          <div><br>
            <span class=3D"gmail_signature_prefix">-- </span><br>
            <div dir=3D"ltr" class=3D"gmail_signature">__________________=
<br>
              <br>
              :(){ :|:&amp; };:</div>
          </div>
        </div>
      </div>
    </blockquote>
  </body>
</html>

--------------SiM7Cf9U9LS10HeJGopQNN7n--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?f226ca70-4cd2-b473-d90c-493d1640070c>