`` Dir Tree
`` Recursively, displays content of a directory and sub-directories
`` www.scriptol.net
/*
syntax:
dirtree [q]
q = quiet, don't display content of subdirectories
Enter a directory at prompt.
It appears a value as \somedir or /somedir doesn't works (ask the OS makers for the reason)
under windows, type: c:\somedir instead.
*/
enum STR_PAD_LEFT, STR_PAD_RIGHT, STR_PAD_BOTH
boolean QUIET = false
void indent(int offset)
for int o in 0.. offset echo " "
return
void dispdir(text level, int offset)
dir mydir = opendir(level)
int fcounter = 0
int dcounter = 0
number size = 0
do
text t = readdir(mydir)
if t = nil break
if t[0] = "." continue
text subdir = level + "/" + t
if is_dir(subdir) = true
//echo pad(" ", 12, " ")
indent(offset)
echo "<", t, ">", "\n"
dcounter + 1
dispdir(subdir, offset+ 1)
else
if (QUIET = false) or (offset = 0)
indent(offset)
print pad(text(filesize(subdir)), 12," ", STR_PAD_RIGHT), t
/if
fcounter + 1
size + filesize(subdir)
/if
/do forever
closedir(mydir)
indent(offset)
print pad(" ", 12, " "), '[', fcounter, "files,", dcounter, "directories ]", size, " bytes"
return
text mainlevel
print "DirTree - www.scriptol.net"
if $argc > 1
if $argv[1] = "q" let QUIET = true
/if
input "Directory? ", mainlevel
if mainlevel = "." let mainlevel = getcwd()
if mainlevel = nil let mainlevel = getcwd()
print "-".dup(50)
print " Dir tree of" , mainlevel
print "-".dup(50)
dispdir(mainlevel, 0)
print "-".dup(50)