Tente usar essa próxima função para essa situação:
copy_wdir() { mkdir -p -- "$(dirname -- "$2")" && cp -- "$1" "$2" ; }
e use-o como
copy_wdir aaa/deep/sea/blob.psd bbb/deep/sea/blob.psd
A propósito, o GNU cp
tem uma opção --parents
. É muito próximo do que você quer, mas não exatamente.
Ele também criará o diretório aaa
que parece que você não precisa. No entanto, você pode primeiro copiar para aaa
e copiar como:
cd aaa && cp --parents deep/sea/blob.psd ../bbb/