#!/bin/bash # Script to generate HTML index files for directories using 'tree' # Array of dirs to exclude exclude_paths=( "! -path */.git*" ) # Get array of dirs dirs=( $(find $@ -type d ${exclude_paths[@]}) ) for i in "${!dirs[@]}"; do # Check for existing index made by 'tree' (rc=0) # or nonexistent (rc=2) grep -qsm1 "Made by 'tree'" "${dirs[i]}/index.html" if [ $? -eq 1 ]; then unset 'dirs[i]' fi done # Reset array dirs=( "${dirs[@]}" ) # List dirs echo "Index will be created in:" printf '%s\n' "${dirs[@]}" echo # Get confirm for creation of index read -n1 -p "Continue? (y/N) " confirm if ! echo $confirm | grep -q '^[Yy]$'; then echo -e "\nAborting"; exit 1 fi echo # Create the indexes for i in "${!dirs[@]}"; do cd "${dirs[i]}" echo "Creating index in ${dirs[i]}" # Generate HTML index - Color, Date, Size(h), No lines(i), Title(T), filter self(I) # Pipe to sed: Remove credits, link to parent dir, change colours tree -CDhi -H "." -T "$(basename $PWD)" -I "index.html" -L 1\ --dirsfirst --charset "utf-8"\ | sed\ -e '/
/,+7d' -e 's/href="\.">\./href="..">../'\ -e 's/BODY {/BODY { color: lime; background: black;/'\ -e 's/color: black;/color: lime;/'\ -e 's/color: blue;/color: deepskyblue;/'\ -e 's/color: green;/color: limegreen;/'\ -e 's/color: purple;/color: mediumpurple;/'\ > index.html cd $OLDPWD done