tree
Version 1.1
This is Cat's Eye Technologies' tree
, a command-line tool that displays an
indented directory tree, similar to "The Tree Command for Linux" except simpler.
It:
- is written in Python (tested with 2.7.12 and 3.5.2)
- is small and has no dependencies besides Python
- is in the public domain (see
UNLICENSE
) - is really quite crude
- displays a summary of the directory structure by default (because to me, that's the point of this sort of tool: give me a conceptual overview of the directory structure at this point in the filesystem, so I can orient myself)
- never follows symbolic links
- always outputs a
/
after each directory name - doesn't have any ASCII art (yet; it might someday as the lines do make it a bit easier to "read" the tree)
- has no build/install system; either copy it to somewhere on your
search path, or alter your search path to include the
script
directory in this repo, or use some system that solves this problem, like shelf.
Usage
tree [-f|--full] [-1|--1-line] [-c|--count]
[-w|--max-width <int>] [-x|--exclude <list>] [DIRECTORY]
If DIRECTORY is not supplied, the current directory is assumed.
The --full
option lists each file in a directory on its own line.
The --1-line
option lists a summary of the files in each directory
on one line, truncating the line if it is longer than the max-width.
The --count
option causes a count of files in each directory to
be display instead of listing the files themselves.
If none of those options are given, all files in a directory are listed compactly over multiple lines, in a "block".
The --max-width
option can be used to set the length of truncation
or block-wrapping. It defaults to the width of the terminal window
as returned by stty size
, if that program can be run, otherwise 75.
The --exclude
option sets the list of directory names to not descend
into (a comma-separated list). It defaults to venv
, node_modules
,
and __pycache__
.
Related work
- The Tree Command for Linux — GPL'ed and feature-bloated and has no automated build system (you're supposed to edit the Makefile by hand.)
- pyr/tree — fine if you're running OpenBSD I suppose, but I gave up on trying to port it to NetBSD and Linux and wrote this instead.
Commit History
@1.1
git clone https://git.catseye.tc/tree/
- Final edits to README before release of 1.1. Chris Pressey 6 years ago
- Delete .hgtags, add .gitignore Chris Pressey 6 years ago
- Edit README to make it all up-to-date. Chris Pressey 6 years ago
- Add --count option. Chris Pressey 7 years ago
- Add --exclude option and update documentation. Chris Pressey 7 years ago
- Put some parens on the print statements, so it works in Python 3. Chris Pressey 7 years ago
- "Block" view of files in a dir. Default. -1 = 1-line, -f = list Chris Pressey 9 years ago
- Rewrite print_tree() to be less hacky. Chris Pressey 9 years ago
- Merge branch 'master' of https://github.com/cpressey/tree Chris Pressey 9 years ago
- Default to detected console width. Width contains ellipsis, now. Chris Pressey 9 years ago