#!/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;