Skip to content

Instantly share code, notes, and snippets.

@edgardleal
Last active June 12, 2017 12:36
Show Gist options
  • Save edgardleal/0903bf4f6d6a3843da4be2162912b2ec to your computer and use it in GitHub Desktop.
Save edgardleal/0903bf4f6d6a3843da4be2162912b2ec to your computer and use it in GitHub Desktop.
A simple replacement for command `tree` for use when you can't install tree
#! /bin/sh
#
# tree.sh
#
#
declare max_level=10
declare dir="$1"
declare -r last="└-"
if [ -z "$dir" ]; then
dir="$(pwd)"
fi
function show_dir()
{
local ident="$2"
local basedir="$1"
local level="$(($3+1))"
if [ $level -gt $max_level ]; then
echo
else
list="$(ls $1)"
index=1
size=$(echo $list | wc -w )
for i in $(echo $list)
do
if [ -d "${basedir}/$i" ]; then
if [ $index == $size ]; then
echo "$ident $last $i"
show_dir "${basedir}/$i" "$ident "
else
echo "$ident ├- $i"
show_dir "${basedir}/$i" "$ident | "
fi
else
if [ $index == $size ]; then
echo "$ident $last $i"
else
echo "$ident ├- $i"
fi
fi
index=$(($index+1))
done
fi
}
show_dir $dir "| " 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment