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.