HTML

Bagoj úr blogja

Kíváncsi Bagoj befigyel a Linux belsejébe, illetve különféle Linux terjesztéseket próbál ki. Ha jó napja van, scriptet ír Neked.

Friss topikok

Könyvtárak grafikus megjelenítése

2008.06.10. 17:36 bagoj ur

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

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 "}";
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
perl dir2svg.pl > output.dot
dot -o konyvtarak.svg -T svg 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.

Mindenkinek jó szórakozást!






















 

4 komment

Címkék: linux perl dot parancssor dotty graphviz

A bejegyzés trackback címe:

https://bagojur.blog.hu/api/trackback/id/tr92612292

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. :)

béla 2008.06.15. 18:56:00

Naaaa... nem csinálnád meg légyszí? :-DDDDD