Se você não copiar os diretórios recursivamente com o argumento -r
, cp
não criará diretórios intermediários para você. (apenas adicionar -r
não funcionará; não tem efeito a menos que a fonte seja um diretório).
Você pode tentar a opção -r
do GNU ln
("criar links relativos") e criar você mesmo os diretórios intermediários com mkdir -p {dirname}
. Exemplo:
# usage mklinks from to [opts/predicates for find ..]
mklinks(){
from=$1; shift
to=$1; shift
find "$from" -type f "$@" -print0 | from=$from to=$to gxargs -0 sh -c '
for a; do
t="$to/${a#$from}"; b=${t##*/}
mkdir -vp "${t%$b}" && gln -vrs "$a" "$t"
done
' sh
}
mklinks ../../1/a . \! -name '*data*'
Claro, se você estiver no Linux, altere gxargs
para xargs
e gln
para ln
.