home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Frozen Fish 1: Amiga
/
FrozenFish-Apr94.iso
/
bbs
/
alib
/
d3xx
/
d306
/
tree.lha
/
Tree
/
README
< prev
next >
Wrap
Text File
|
1990-01-11
|
4KB
|
89 lines
Tree. A very, very simple directory tree traversal program. I wrote it for
two reasons:
- To be able to zoo directory trees
- To be able to zoo large directories without waiting forever
- To be able to find the large files on my disk
- To be able to selectively `backup' files (with zoo, copy or whatnot),
deleting a certain set of directories and file extensions.
So that's what I wanted it to do. Now how it works.
First, it always lists the tree starting at the current directory, and not
prefixed by anything. Thus, if I'm in the TeX:foo directory, and there is
one file in it called `bar', the program will list the single output line
bar
and that's it. All files listed are listed by the pathname starting at the
current directory, so if TeX:foo contained a directory bar with files baz1
and baz2, and TeX:foo also contained fubar, then the output would be
bar/baz1
bar/baz2
fubar
The files are listed in the order they are encountered, not alphabetically.
Simple enough? Okay, here are the options. Each option is either an option
keyword or a parameter. At any given time, one option keyword is in effect,
and all parameters are added.
The option keywords are:
-d: Add to the list of directories to be ignored. Any parameters following
this will be skipped in the treewalk. All parameters to this (and other)
options are case sensitive (this is a bug since the Amiga file system
isn't case sensitive; fix it if you like.)
-x: Add to the list of file extensions to be ignored. A file extension is an
outdated concept, in which the last part of a file name, after the last
period, is considered an extension. Thus, the extension of a.b.c is `c';
the file foo does not have an extension.
-f: Use this (one) parameter as the output format. The output format is just
a string, where all `%s' sequences are replaced by the file name, all
`%d' sequences are replaced by the file size, all %% sequences are
replaced with a single percent sign, and all other characters are taken
verbatim. Useful if you want to build a command file that does something
to all of the files.
-h: Print a short informational message.
Thus, to find the largest files on the disk, I simply use
tree -f "%d %s" | sort
(The sort program is also supplied as a freebie; this one reads from stdin and
writes to stdout, or will function as the AmigaDOS one, but it's faster than
the AmigaDOS one, even though it's written in quick and dirty C.)
To make a full backup of my disk onto the Syquest, I simply
cd dh0:
tree -d tex/pk arc autodocs f18 -x dvi log o | zoo aI dh20:backup.date
which doesn't backup the directories tex/pk, arc, autodocs, and f18 (since they
are rather large and easily recreated from distribution floppies) and doesn't
save any .dvi, .log, or .o files (since object files especially take up a fair
proportion of the disk), and backups the entire mass with zoo onto another
drive.
This procedure (with maybe a few more directories added) can backup my entire
90MB disk onto a single 25MB file, which I put on a Syquest. It does take a
while to run (perhaps an hour; never really timed it) but I let it work
overnight.
I have restored from these, so it does work.
There is so many more things that can be done with `tree', but I haven't decided
on a nice general way to express these things (ie, it should function as a `du'
as well, and an option to `Execute()' rather than print each output line might
be nice) but I'll add them as I need them. (Hey, the Execute() option is just
a couple of lines of code . . . if you want it, you've got source . . .)
Now, whenever I zoo, I just `tree | zoo aI' rather than `zoo'; it's so much
faster!
Enjoy!