| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 | #!/usr/bin/env zsh# desc:## Output an org compatible structure representing the filesystem from# the point passed on the command line (or . by default).## options:#     none## usage:#     dir2org.zsh [DIR]...## author:#     Phil Jackson (phil@shellarchive.co.uk)set -efunction headline {    local depth="${1}"    local text="${2}"    printf "%${depth}s %s" "" | tr ' ' '*'    echo " ${text}"}function scan_and_populate {    local depth="${1}"    local dir="${2}"    headline ${depth} "${dir}"    # if there is no files in dir then just move on    [[ $(ls "${dir}" | wc -l) -eq 0 ]] && return    (( depth += 1 ))    for f in $(ls -d "${dir}"/*); do        if [ -d "${f}" ]; then            scan_and_populate ${depth} "${f}"        else            headline ${depth} "[[file://${f}][${${f##*/}%.*}]]"        fi    done    (( depth -= 1 ))}function main {    local scan_dir="${1:-$(pwd)}"    local depth=0    scan_and_populate ${depth} "${scan_dir}"}main "${@}"
 |