kopia struktury plikow

0

witam chce napisac taki skrypt ktory utworzy strukture folderow wraz z 0bytes plikami
wyglada to tak ze skrypt przeskanuje dana sciezke i np
/dir/pliki/jpg/pierszy/ bedzie skopiowane do /kopia/pierwszy/
i tak pokolei wszystkie foldery z danej sciezki /dir i skopiuje nazwy plikow i utworzy 0byte plik z ta nazwa w danym folderze i aby skrypt pomijal kopiowanie nazwy fodleru w ktorym nie ma plikow. Takze czy byla by mozliwosc utworzenia pliku tez 0byte o nazwie np wielkosc-2mb-plikow-3 ?

wygladalo by to mniejwiecej tak:

/dir/pliki/jpg/pierwszy/jeden.jpg -> /kopia/pierwszy/jeden.jpg 0byte plik
/dir/pliki/jpg/pierwszy/drugi.jpg -> /kopia/pierwszy/drugi.jpg 0byte plik
/dir/pliki/jpg/pierwszy/trzeci.jpg -> /kopia/pierwszy/trzeci.jpg 0byte plik
/dir/pliki/jpg/pierwszy/ - > /kopia/pierwszy/wielkosc-2mb-plikow-3 0byte plik
/dir/pliki/jpg/drugi/ ...
/dir/pliki2/mp3/ktorys/plik.mp3 -> /kopia/ktorys/plik.mp3 0byte plik

kod moze byc napisany w dowolnym jezyku bo odpalany bedzie z shella np ./script /dir/do/skanowania/

bardzo bym Was prosil o pomoc

0

dobra oto kod w perlu

#!/usr/bin/perl

use strict; use warnings;
use IO::All;

my $sourcedir = "/dir/";
my $copydir = "/kopia/";

foreach my $dir ( io($sourcedir) -> all_dirs(0) ) {
 my $count = my $size = 0; my $subdir;
 for ( io($dir) -> all_files() ) {
  $count++;
  $size += io($_) -> size();
  ($subdir) = ( $_ =~ m!^.*/(.*)/! );
  io( "$copydir/$subdir" ) -> mkpath();
  io( "$copydir/$subdir/" . io($_) -> filename() ) -> touch();
 }
 io( "$copydir/$subdir/${count}_files_${size}_bytes" ) -> touch();
 if $count;
}
__END__

i teraz pytanie w jaki sposob pominac w kopiowaniu dane foldery jak np system, nie_ten_dir ?

dzieki

1 użytkowników online, w tym zalogowanych: 0, gości: 1