#!/bin/bash # ftc : file tree create set -e function ftc_sub { if [ -h "$1" ]; then ltarget="$(readlink -- "$1" && echo 'x')" ltarget="${ltarget% x}" echo "l ${#ltarget} $ltarget" elif [ -f "$1" ]; then if [ -x "$1" ]; then stat --format=$'x %s' -- "$1" else stat --format=$'f %s' -- "$1" fi cat -- "$1" echo elif [ -d "$1" ]; then ( echo "{" cd -- "$1" unset GLOBIGNORE shopt -s nullglob shopt -s dotglob for entry in *; do echo -n "+ ${#entry} $entry " ftc_sub "$entry" done echo "}" ) else echo "File of unknown type!" 1>&2 fi } ftc_sub "$1"