www.delorie.com/archives/browse.cgi | search |
X-Recipient: | archive-cygwin AT delorie DOT com |
X-Spam-Check-By: | sourceware.org |
Message-ID: | <4946EE85.4080601@swcp.com> |
Date: | Mon, 15 Dec 2008 16:55:49 -0700 |
From: | Lynn Wilson <lynn AT swcp DOT com> |
User-Agent: | Thunderbird 2.0.0.18 (Windows/20081105) |
MIME-Version: | 1.0 |
To: | cygwin AT cygwin DOT com |
Subject: | Re: Source for Tree command |
Mailing-List: | contact cygwin-help AT cygwin DOT com; run by ezmlm |
List-Id: | <cygwin.cygwin.com> |
List-Subscribe: | <mailto:cygwin-subscribe AT cygwin DOT com> |
List-Archive: | <http://sourceware.org/ml/cygwin/> |
List-Post: | <mailto:cygwin AT cygwin DOT com> |
List-Help: | <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs> |
Sender: | cygwin-owner AT cygwin DOT com |
Mail-Followup-To: | cygwin AT cygwin DOT com |
Delivered-To: | mailing list cygwin AT cygwin DOT com |
You can try using the windows one at: c:/WINDOWS/system32/tree.com Or you can roll you own as shown below which will also work on *nix machines. enjoy. Lynn ============================= #!/bin/bash # This scripts graphically displays a file directory structure # Does NOT work with file names containing embedded spaces! # # Written by Lynn R. Wilson March 2001 # depth=0 let MaxDepth=10000 function TreeHelper() { local savethis savethis="$thisfile" local saveindent local printed printed= if [ -n "$ShowFiles" ]; then for file in $* ; do thisfile="$thisfile/$file" if [ -f "$thisfile" ]; then printed="1" echo -e "$indent|-- $file" # add * at end if you want... fi thisfile="$savethis" done fi for file in $* ; do if [ "$file" = "CVS" ] && [ -n "$ignoreCVS" ]; then continue fi thisfile="$thisfile/$file" if [ -d "$thisfile" ]; then if [ -L "$file" ]; then link=$( ls -al "$file" ) link=${link##*>} # keep everything after last '>' echo -e "$indent|-- $file/ (symlink)-> $link" else echo -e "$indent|-- $file/" fi printed="1" saveindent=$indent indent="$indent| " if [ ! -L "$file" ] || [ -n "$FollowLinks" ]; then let depth=$depth+1 if [ $depth -lt $MaxDepth ] ; then TreeHelper $( command ls "$thisfile" ) else echo -e "$indent..." fi let depth=$depth-1 fi indent=$saveindent fi thisfile=$savethis done if [ -n "$printed" ]; then echo -e "$indent" fi } # parse the command arguments # can also be done with ( while getopts ":ip:" opt; do... ) while true; do if [ "$1" = "-f" ]; then ShowFiles=1 shift continue fi if [ "$1" = "-L" ]; then FollowLinks=1 shift continue fi if [ "$1" = "-d" ]; then shift MaxDepth=$1 shift continue fi if [ "$1" = "-C" ]; then ignoreCVS=1 shift continue fi if [ "$1" = "-h" ]; then echo 'Usage: tree [-f] [-L] [-C] [-d depth] [ path ]' echo '-f also shows files, -L follows symbolic links, -C ignores CVS' echo exit fi break done if [ -z "$1" ] ; then here=$( pwd ) else here=$1 fi if [ ! -d "$here" ]; then echo Not a Directory! $here exit 1 fi echo Tree rooted at: $here thisfile=$here TreeHelper $( command ls "$here" ) exit 0 # end of script -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |