Page 1 of 1

Disktree

Posted: 2005-10-25 19:45
by alexander newald
Da immer wieder gefragt wurde, wie man am Besten den Inhalt eines Verzeichnisses und der Unterverzeichnisse darstellen kann, habe ich ein ganz kleines Skript gebastelt, welches dies erledigt:

Code: Select all

alexander @ ~ > disktree /home/apache/
 * finding dirs ...
 * getting usage...
     5.66 MB  95.71        /htdocs        *******************************
   396.00 KB   6.54          /images      **
     4.00 KB   0.07            /retired
    12.00 KB   0.20          /status
     3.71 MB  62.68          /mrtg        ********************
   244.00 KB   4.03        /cgi-bin       *
     8.00 KB   0.13        /.ssh
Zum Downloaden und Testen auf linux.newald.de

Ist kein wirklich schöner Programmierstiel und ohne Kommentar, aber wenn gefällt hole ich das nach.

Re: Disktree

Posted: 2005-10-25 21:30
by braindead
++

mehr kann ich dazu einfach net sagen *G*

Re: Disktree

Posted: 2005-10-25 21:55
by hornox
Schau dir mal an was dein Skript macht wenn ein Verzeichnis z.b. "foo;bar" heißt.

Ist zwar IMHO keine Sicherheitslücke weil man so meines Wissens weder Pfadangaben noch Parameter einschmugeln kann aber zumindest ein Bug.

Re: Disktree

Posted: 2005-10-25 22:41
by alexander newald
Update verfügbar

Re: Disktree

Posted: 2005-10-25 23:29
by hornox

Code: Select all

hornox@devmode:~/test$ mkdir "foo
> bar"
hornox@devmode:~/test$ mkdir '"'
hornox@devmode:~/test$ /usr/bin/perl disktree_01.txt .
 * finding dirs ...
 * getting usage...
 FAILED ./foo
 FAILED bar
sh: -c: line 1: unexpected EOF while looking for matching `"'
sh: -c: line 2: syntax error: unexpected end of file
     0.00 B    0.00    /"    
Gibt vermutlich noch mehr...

Re: Disktree

Posted: 2005-10-25 23:30
by Roger Wilco
Ich sehe jetzt nicht so ganz den Vorteil gegenüber "du -hs /path/to/dir/*" oder "find /path/to/dir -type d -exec du -hs {} ;". Das mag aber durchaus an mir liegen... :roll:

Re: Disktree

Posted: 2005-10-26 01:48
by alexander newald
@HornOx

Wie quote ich in der Shell alle Sonderzeichen raus?

Re: Disktree

Posted: 2005-10-26 01:55
by alexander newald
@Roger Wilco

Für mich, dass man Verzeichnisse, die deutlich mehr als andere "Verbrauchen" am Balken erkennt.

Bei einer grossen Anzahl von Verzeichnissen ist der visuelle Effekt ein Vorteil. (zumindest für mich).

So finde ich z.B. in /usr recht leicht /qt als Verzeichniss mit viel Daten, bei "find /usr -type d -exec du -hs {} ;" fällt mir das in der langen Liste (bei mir 4430 Zeilen) schon viel schwerer:

Code: Select all

alexander @ ~ > disktree /usr/|grep "***"
   350.15 MB  32.32      /local                                              **********
   154.97 MB  14.30        /qt                                               ****
   270.98 MB  25.01      /lib                                                ********

Re: Disktree

Posted: 2005-10-27 13:07
by hornox
Wie quote ich in der Shell alle Sonderzeichen raus?
Soweit ich weiß geht das gar nicht.
Aber in Perl kannst du dir einen entsprechenden regulären Ausdruck basteln der alle Zeichen maskiert, z.b. $dir =~ s/([^60-71101-132141-172])/"\".oct($1)/eg

Re: Disktree

Posted: 2005-10-28 09:52
by braindead
HornOx wrote:
Wie quote ich in der Shell alle Sonderzeichen raus?
Soweit ich weiß geht das gar nicht.
Aber in Perl kannst du dir einen entsprechenden regulären Ausdruck basteln der alle Zeichen maskiert, z.b. $dir =~ s/([^\060-\071101-132141-172])/"".oct($1)/eg
du kannst die regex jetzt auch einfach mit sed laufen lassen und schon hast du das ganze auch in der Shell.