#!/bin/sh -e # Flatten folder hierarchy # Args: depth depth=$(expr 1 \& $# \| 2) case $1 in ([0-9]|[0-9][0-9]) depth=$1; shift;; esac find "$@" -mindepth $depth -maxdepth $depth -depth -type d | while read folder; do newname="$(echo "$folder" | sed 's|^./||;s|/|_|g')" mv -v "$folder" "$newname" parent="$(dirname "$folder")" test "$(basename "$folder")" = "$(basename "$parent")" && rm -d "$parent" && mv -v "$newname" "$parent" done find -maxdepth $depth -empty -type d -delete