egy unalmas napon elkezdtem egy cdkatalogizalot fejleszteni, majd felbehagytam. ez lett belole
termeszetesen ha lesz vegleges verzio akkor azt is kiteszem. Persze ez is teljesen mukodo verzio, csak par dolog hianyzik belole amit en meg beletennek
#!/usr/bin/perl
############################################
#
# 2 do: rekurziv kerese is kene de NAGYON!!! -> kesz
# ^^^^^^^^
# filelist() minimalizalas...
# rekurziv csak az adott catalogban mukodik...
# ujrastrukturalsa a file megoldasnak???
# Atvinni az egeszet a grafikus feluletre...
# ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
# catalog es disk atnevezesenek lehetosege!!!
# helpscreen() ujrakonfigolasa...
#
# ráér: hibakezeles pl: --min = /[a-z]/i => kilep
# kulon dir-ben valo kereses kell-e. mivan???
# mount point leszedese....
#
############################################
use Getopt::Long;
use File::Find;
use HTTP::Date;
use Term::ANSIColor;
#use warnings; # minek is???
#use Config; # a mountolashoz.....
#use Pod::Usage; # a helpscreenhez kell, jo ez nekem???
GetOptions(
'version'=>\$opt_v, # verzioszam...
'help'=>\$opt_h, # helpscreen => ezen meg dolgozni kell...
'catalog=s'=>\$opt_c, # catalog [ez a dir] => modositas a rekurziv kereseben...
'disk=s'=>\$opt_D, # ez pedig a filok a dirben...
'dir=s'=>\$opt_d, # az eleresi ut
'rename=s'=>\$opt_r, # => atnevezes, mind a dirt mind a fileokat...
'min=f'=>\$opt_m, # min file meret...
'max=f'=>\$opt_M, # max file meret...
'ext=s'=>\$opt_e, # kiterjeszes...
'name=s'=>\$opt_n, # ezt tartalmazza => meg kene csinalni...
'search'=>\$opt_s, # rekurziv kereses...
'list'=>\$opt_l # disk lista => modositani kell => datum kiiratasa kell-e???
);
if($opt_v) {
version();
}
elsif($opt_l) {
$bbdir="$ENV{HOME}/.bluebox";
filelist();
}
elsif($opt_h) {
helpscreen();
}
elsif($opt_D || $opt_s) {
$bbdir="$ENV{HOME}/.bluebox";
# if($opt_r) {
# rename("$bbdir/$opt_c/$opt_d","$bbdir/$opt_c/$opt_r");
# die "$!";
# }
if(!$opt_m && !$opt_M) {
$opt_m=0;
}
else {
# elsif($opt_m =~ /[0-9]/ || $opt_M =~ /[0-9]/){
$opt_m=($opt_m*1024)*1024 if $opt_m;
$opt_M=($opt_M*1024)*1024 if $opt_M;
}
# else {
# die "asdf";
# }
if($opt_d) {
$mappa="";
unless(-d $bbdir) {
mkdir("$bbdir",0777) || die "nem hozhato letre: $!";}
unless(-d "$bbdir/$opt_c") {
mkdir("$bbdir/$opt_c",0777) || die "nem hozhato letre: $!";}
open(LISTA,">$bbdir/$opt_c/$opt_D.bbx");
find(\&wanted,$opt_d);
}
else{
kifele();
print "\n";
}
}
sub wanted {
#keresés...
$files[0]=-s if -f;
$files[0]= 0 if -d;
if(-f && $files[0] > $opt_m && !$opt_M) {
motor();#a legkisebb file...
}
elsif(-f && $files[0] < $opt_M && !$opt_m) {
motor();#a legnagyobb file...
}
elsif(-f && $files[0] < $opt_M && $files[0] > $opt_m) {
motor();#ket ertek kozott..
}
}
sub motor {
#a kereso motor...
@mtime=stat($_);
#@name=split(/$opt_d/,$File::Find::name);#.-nal nem megy.. illetve /dir/mappa/ -nal sem...
print LISTA "$File::Find::name\\##\\$mtime[7]\\##\\$mtime[9]\\##\\";
}
sub kifele {
#a kikereso motor, rekurzív...
if($opt_s){
opendir(DIR,"$bbdir/$opt_c") || die($!);
foreach $_ (sort readdir(DIR)){
if($_ =~ /bbx/){
$mappa="";
@bbx=split(/\./,$_);
$tiszta=""; # a kiterjesztes leszedese
for($i=0;$i<$#bbx;$i++) {
$tiszta=join("",$tiszta,"$bbx[$i]");
}
open(LISTA,"$bbdir/$opt_c/$_") || die "nem sikerult megnyitni: $!\n";
kikeres();
}
}
closedir(DIR);
}
else {
open(LISTA,"$bbdir/$opt_c/$opt_D.bbx") || die "nem sikerult megnyitni: $!\n";
kikeres();
}
}
sub kikeres{
#a megfelelo file kivalasztasa.....
while(<LISTA>) {
@eredmeny=split(/\\##\\/,$_);
for($i=0;$i<$#eredmeny;$i+=3) {
$mtime=time2str($eredmeny[$i+2]);
@time=split(/ /,$mtime);
$time[2]="01" if $time[2] eq "Jan";
$time[2]="02" if $time[2] eq "Feb";
$time[2]="03" if $time[2] eq "Mar";
$time[2]="04" if $time[2] eq "Apr";
$time[2]="05" if $time[2] eq "May";
$time[2]="06" if $time[2] eq "Jun";
$time[2]="07" if $time[2] eq "Jul";
$time[2]="08" if $time[2] eq "Aug";
$time[2]="09" if $time[2] eq "Sep";
$time[2]="10" if $time[2] eq "Oct";
$time[2]="11" if $time[2] eq "Nov";
$time[2]="12" if $time[2] eq "Dec";
if($eredmeny[$i+1] > $opt_m && !$opt_M) {
file();#a legkisebb file...
}
elsif($eredmeny[$i+1] < $opt_M && !$opt_m) {
file();#a legnagyobb file...
}
elsif($eredmeny[$i+1] < $opt_M && $eredmeny[$i+1] > $opt_m) {
file();#ket ertek kozott..
}
}
}
}
sub file {
#o"felsege a filenev...
$size="byte"; #ha szurnenk a meretet felvetelkor...
if($eredmeny[$i+1] > 1024) {
$eredmeny[$i+1]/=1024;
$size="kilo";
}
if($eredmeny[$i+1] > 1024) {
$eredmeny[$i+1]/=1024;
$size="mega";
}
@file=split(/\//,$eredmeny[$i]);
$teljes=""; # a dir leszedese
for($j=0;$j<$#file;$j++) {
$teljes=join("",$teljes,"$file[$j]\/");
}
if(!$opt_e) {
fileprint();
# write(); ez csak a kepernyonel kell...
}
elsif($file[-1] =~ /$opt_e$/ ) {
fileprint();
# write(); ez csak a kepernyonel kell...
}
}
sub fileprint {
#a kiiratas....
# print color 'BOLD';
if($opt_s && ($tiszta ne $ellenor)){
# print color 'BOLD';
print "\n================================================================================\n";
print " $tiszta\n";
print "================================================================================\n";
$tiszta=$ellenor;
# print color 'reset';
}
if($mappa ne $teljes) {
$mappa=$teljes;
print "\n$mappa\n\n";
}
print " $file[-1]";
print color 'red';
print " => ";
print color 'reset';
print color 'BOLD'; # azelott itt feher volt....
printf "%5.2f", $eredmeny[$i+1];
print " $size";
print color 'reset';
print color 'red';
print " => ";
# print color 'reset';
print color 'yellow';
print "$time[3]-$time[2]-$time[1] ";
print color 'reset';
print "$time[4]\n";
}
sub filelist {
#a projectlista
#ezt meg kikell pofozni....
$osszes=0;
print "\n";
opendir(DIR,"$bbdir/$opt_c") || die($!);
foreach $_ (sort readdir(DIR)){
if($_ =~ /bbx$/){
$mappa="";
@bbx=split(/\./,$_);
$tiszta=""; # a kiterjesztes leszedese
for($i=0;$i<$#bbx;$i++) {
$tiszta=join("",$tiszta,"$bbx[$i]");
}
#kifele();
print "$tiszta\n";
++$osszes;
}
}
closedir(DIR);
print "\n";
print "file-ok szama: $osszes";
print "\n";
}
sub helpscreen {
#helpscreen...
my $screen = <<"HELP";
hasznalat: pl.: -dir /mnt/vidor -catalog particiok -disk vidor
-catalog particiok -disk vidor --min 5 -e jpg
-v --version # verzioszam...
-h --help # helpscreen => ezen meg dolgozni kell..
-c --catalog # catalog [ez a dir] => modositas a rekurziv kereseben..
--disk # ez pedig a filok a dirben...
--dir # az eleresi ut
--rename # => atnevezes, mind a dirt mind a fileokat...
--min # min file meret...
--max # max file meret...
-e --ext # kiterjeszes...
--name # ezt tartalmazza => meg kene csinalni...
--search # rekurziv kereses...
-l --list # disk lista => modositani kell, datum kiirasa kell-e?
HELP
print $screen;
}
sub version {
#verziószám...
my $ver = <<"VERZIO";
0.07.3
VERZIO
print $ver;
}
#------------------------------------------------------------------------------
#out of order...
format STDOUT =
@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< @####.##
@>>>>
$file[-1],$eredmeny[$i+1],$size,$time[3],-$time[2],-$time[1], $time[4]
.
Szerkesztette: giotto 2004. 05. 18. 15:02 -kor