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 -e
- function 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 "${@}"
|