#!/bin/bash zfs diff -H "$3" "$4" | grep '^R' | while read -r line do get_path() { path="$(echo -e "$(echo "$line" | cut -d$'\t' "-f$3")")" echo "${path/#$2/$1}" } from="$(get_path "$1" "$2" 2)" to="$(get_path "$1" "$2" 3)" mkdir -vp -- "$(dirname "$to")" mv -vn -- "$from" "$to" || echo "Unable to move $from" done