Algo parecido com isso deve fazer você mudar BASE
para ser o caminho base que você deseja.
#!/bin/bash
BASE="/tmp"
for file in *
do
nf=$(echo "$file" | sed 's|\|/|g')
filename=$(basename "$nf")
path=$(dirname "$nf")
mkdir -p "$BASE/$path"
cp "$file" "$BASE/$path/$filename"
done
Eu inventei isso em um sistema Linux, mas espero que funcione como esperado no OSX.