41 lines
1.1 KiB
Bash
Executable File
41 lines
1.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# Generates a simple index of the current folder and subfolders creating
|
|
# a table of contents of all of the .md files contained within.
|
|
|
|
long_contents=$(find . | sort)
|
|
|
|
# replace the absolute path in all lines
|
|
contents=${long_contents//\.\//}
|
|
|
|
prev=""
|
|
|
|
echo "$contents" | while read -r line || [[ -n $line ]];
|
|
do
|
|
# the line contains a file, or hidden dir
|
|
if [[ $line == *"."* ]]; then
|
|
# if the line is an md, not in the .zk dir, and not a dir
|
|
if [[ $line == *".md"* && ! -d "$line" && $line != *".zk"* ]]; then
|
|
# extract the name of the file
|
|
name=$(echo "$line" | sed 's/.*\///' | sed 's/\.md//')
|
|
# create the link
|
|
name="[$name]($line)"
|
|
else
|
|
continue
|
|
fi
|
|
else
|
|
# the folders are titles
|
|
name=$(echo -e "\n## $line")
|
|
fi
|
|
|
|
# two titles in a row means empty folder.
|
|
if [[ $prev == *"##"* && $name == *"##"* ]]; then
|
|
prev=$name
|
|
name=$(echo -e "Folder Empty.\n$prev")
|
|
else
|
|
prev=$name
|
|
fi
|
|
|
|
echo "$name"
|
|
done
|