#!/usr/bin/env bash set -e replace_profile="$1" profile="$2" if ! (( "${#@}" )); then echo "Usage: ${0##*/} [replace_profile_dir] [profile_dir]" echo "This script will map replace.txt under replace_profile_dir and modify files in profile_dir." fi if ! [[ -d "${replace_profile}" ]]; then echo "Please specify a valid replacements directory." exit 1 fi if ! [[ -d "${profile}" ]]; then echo "Please specify a valid profile directory." exit 1 fi mapfile -t replacements < <(grep -vE '^\s*($|#)' "$replace_profile/replace.txt") for r in "${replacements[@]}"; do IFS=":" read -ra files <<< "$r" orig="${files[0]}" dest="${files[1]}" #echo "Delete $orig" rm -v "$profile/$orig" if [[ "$r" =~ :$ ]]; then continue fi if ! (( "${#dest}" )); then dest="$orig" fi #echo " -> Copying $replace_profile/$dest to $profile/$dest" cp -v "$replace_profile/$dest" "$profile/$dest" done echo "Deleting all empty dirs under $profile" find "$profile" -type d -empty -exec rmdir {} \;