В качестве двухэтапного -процесса сначала создается целевой каталог (, если он еще не существует ), а затем копируется файл (, если mkdir
удалось ).
dir=/some/path/to
mkdir -p "/newdir/$dir" && cp "$dir/file" "/newdir/$dir"
В качестве функции оболочки (обрабатывает только копирование одного файла):
cp_parents () {
source_pathname=$1
target_topdir=$2
mkdir -p "$target_topdir/${source_pathname%/*}" && cp "$source_pathname" "$target_topdir/$source_pathname"
}
Затем,
$ cp_parents /some/path/to/file /newdir