Béla kérése volt egy kis program, ami a könyvtárszerkezetről rajzol egy ábrát. Ez például igen hasznos lehet website-ok sitemap-jének megalkotásához, persze kis tuningolás biztosan kell hozzá; de ha SVG-be generáljátok le, akkor szépen Inkscape-pel editálni is tudjátok a végeredményt, és vektorosan akármekkorában el tudjátok menteni. ;-)#!/usr/bin/perl -w
Ha valaki esetleg tudna a kódon tömöríteni, azt külön értékelném...! :-) Szóval, a használata annyi, hogy le kell tenni egy fájlba, legyen mondjuk "dir2svg.pl" aztán
our @nodes;
our @edges;
sub rddir{
my $RelativePath = shift;
my $counter = shift;
if($counter>10){return;}
my @files;
@files = <$RelativePath/*>;
foreach $fajl(@files){
if($fajl=~/^\.{1,2}$/){next;}
$fajl =~ s/^.*\/(.*)$/$1/;
if(-d $fajl){
rddir("$RelativePath/$fajl",($counter+1));
}
$RelativePath =~ s/^.*\/(.*)$/$1/;
push(@edges,"\t\"$fajl\" -> \"$RelativePath\"");
push(@nodes,"\t\"$fajl\"");
}
}
rddir(".",0);
print "digraph konyvtarak {\n\tnode [shape = box];rankdir=\"RL\";\n";
foreach $anEdge(@edges){print "$anEdge;\n";}
foreach $aNode(@nodes){print "$aNode;\n";}
print "}";perl dir2svg.pl > output.dot
A graphviz csomag még mindig kell hozzá! És Windows alatt biztosan nem fog működni, az egyszerűség kedvéért nem használtam a Perl opendir, readdir függvényeit, így kisebb a kód. ;-) Az eredményt pedig láthatjátok balra. Ahogyan a 9. sorból kiedrül, csak 10 mélységű könyvtárszerkezetet listáz, erre való a $counter változó. Ha nem tetszik, lehet növelni vagy csökkenteni. Ugyanúgy nem kezeli le a symlinkeket stb. szóval kis fejlesztés még ráfér.
dot -o konyvtarak.svg -T svg output.dot
Mindenkinek jó szórakozást!
Könyvtárak grafikus megjelenítése
2008.06.10. 17:36 bagoj ur
4 komment
Címkék: linux perl dot parancssor dotty graphviz
A bejegyzés trackback címe:
https://bagojur.blog.hu/api/trackback/id/tr71612292
Kommentek:
A hozzászólások a vonatkozó jogszabályok értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a Felhasználási feltételekben és az adatvédelmi tájékoztatóban.
bagoj.ur 2008.06.10. 17:46:14
Húha, most látom csak hogy elsiettem a dolgot; ha ugyanolyan nevű fájlok vannak két eltérő nevű könyvtárban, akkor a fájl csak egyszer lesz az ábrán és mindkét könyvtárhoz kapcsolódni fog. Oda se neki, feladom nektek házi feladatnak... ;-)
béla 2008.06.10. 21:35:12
Köszi szépen, de az én erőmet meghaladja, hogy ezt kibogozzam. :-) Majd kézzel kigyomlálom. Köszönöm, nem gondoltam volna hogy megcsinálod és ilyen gyorsan. :-))))
bagoj.ur 2008.06.11. 09:25:56
Szia Béla,
ha teljes elérési úttal nevezed meg a node-okat, viszont olyan label-t adsz neki, ami csak a fájlnév, akkor jó lesz. Remélem, segítettem. :)
ha teljes elérési úttal nevezed meg a node-okat, viszont olyan label-t adsz neki, ami csak a fájlnév, akkor jó lesz. Remélem, segítettem. :)
béla 2008.06.15. 18:56:00
Naaaa... nem csinálnád meg légyszí? :-DDDDD