Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re: Create zip files for each sub-directory under a main directory

by stevieb (Canon)
on Nov 29, 2016 at 14:49 UTC ( [id://1176823]=note: print w/replies, xml ) Need Help??


in reply to Create zip files for each sub-directory under a main directory

I believe something like the following should get you close to where you want to be.

Given this directory structure:

orig |-a |- a.txt |-b |- b.txt |-c |- c.txt

...and running this code:

use strict; use warnings; use Archive::Zip; use File::Basename; use File::Copy::Recursive; use File::Find::Rule; use constant AZ_OK => 0; my $mkvingestdir = 'orig'; my $mkvingestdest = 'new'; my $zip_dest = 'zipped'; File::Copy::Recursive::dircopy $mkvingestdir, $mkvingestdest or die "copy failed: $!\n"; my @dirs = File::Find::Rule->directory() ->in($mkvingestdest); for my $dir (@dirs){ next if $dir =~ /(?:\.|\.\.)/; next if $dir eq $mkvingestdest; my $zip = Archive::Zip->new; $zip->addDirectory($dir); my $name = basename $dir; if ($zip->writeToFileNamed("$zip_dest/${name}.zip") != AZ_OK){ print "error in archive creation\n"; next; } print "archive created successfully\n"; }

I get the following zip files in the zipped zip destination directory:

$ ls zipped/ a.zip b.zip c.zip

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1176823]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others having a coffee break in the Monastery: (4)
As of 2024-04-25 07:54 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found