#!/usr/bin/perl -w # cptar.pl # Utilidad para la búsqueda y copia de archivos mediante tar # Julio de 2005. FJA - neocipres@jazzfree.com use strict; use File::Find; no warnings 'File::Find'; my $na = 0; my $dir = ""; my $filtro = ""; my $ftar = ""; my @archivos; sub raya { print "\n#"; print "=" x 78 . "#\n\n"; } sub listaf{ my $arch = $_; if (-f $arch && $arch =~ $filtro){ print "\ $File::Find::name \n"; push(@archivos, $File::Find::name); $na++; } } print "\n"; if ($#ARGV < 2) { system("clear"); raya; print "\ cptar.pl: busca archivos y los empaqueta en un tar\n\n"; print "\ Uso:\t cptar <directorio> <filtro> <nombre archivo tar>\n\n"; print "\t ---------------------------------------\n\n"; print "\ Ejemplos de posibles filtros para la busqueda: \n\n"; print "\t filtro : busca archivos que contengan filtro en su nombre\n"; print "\t ^filtro: los que contengan filtro al comienzo del nombre\n"; print "\t filtro\$: los que contengan filtro al final del nombre\n"; print "\t fi?tro : sustituyendo alguna de las letras del filtro \n"; print "\t ^[.] : busca archivos ocultos \n"; print "\t * o \\* : prueba con ellos \n\a"; raya; exit; } if ($#ARGV == 2) { $dir = $ARGV[0]; $filtro = $ARGV[1]; if ($filtro =~ /\*/){$filtro = "";} $ftar = $ARGV[2]; if ($ftar !~ /\.tar$/) {$ftar = $ftar . ".tar.gz";} else {$ftar = $ftar . ".gz";} } find(\&listaf, $dir); raya; #system("tar -czf $ftar @archivos") or die "Error al crear $ftar: $!"; my @salida = `tar -czf $ftar @archivos`; print "\n", @salida; print "\n Archivos agregados de $dir con el filtro -> $filtro: $na \n\n\a"; raya;