Собственная утилита cp
AIX, как вы заметили, не включает опцию --parent
.
Одним из вариантов может быть установка и использование rsync из набора программного обеспечения AIX Toolbox for Linux Applications . Вам также необходимо установить popt RPM (в качестве зависимости от rsync ).
Тогда можно было бежать:
rsync -R /some/path/to/file /newdir/
Чтобы получить /newdir/some/path/to/file
.
В качестве домашнего -выращенного варианта вы можете написать функцию-оболочку, используя ksh93 (для поддержки массива ), чтобы эмулировать поведение.Ниже в качестве примера показана функция голых -костей; предполагается, что вы хотите копировать файлы с относительными путями, и не поддерживает никаких параметров:
relcp() {
typeset -a sources=()
[ "$#" -lt 2 ] && return 1
while [ "$#" -gt 1 ]
do
sources+=("$1")
shift
done
destination=$1
for s in "${sources[@]}"
do
if [ -d "$s" ]
then
printf "relcp: omitting directory '%s'\n" "$s"
continue
fi
sdir=$(dirname "$s")
if [ "$sdir" != "." ] && [ ! -d "$destination/$sdir" ]
then
mkdir -p "$destination/$sdir"
fi
cp "$s" "$destination/$sdir"
done
unset sources s sdir
}