Você não disse que está em /home/me
, mas o comando cp
criará todos os seus links como absolutos, onde quer que esteja, ou seja, TargetDir/File0 -> /home/me/SourceDir/File0
etc, não os links relativos ilustrados.
Você pode conseguir o que deseja usando find
: -
cp -sR /home/me/SourceDir TargetDir
cd /home/me/SourceDir
find -type l -exec cp -P "{}" "/Path/To/TargetDir/{}" \;
- O primeiro comando é o seu original.
- Ao se posicionar no diretório de origem, você o elimina do caminho de localização.
- O
find
comcp -P
sobrescreve os links com cópias integrais dos links de origem. - As aspas duplas permitem arquivos e diretórios com espaços em branco incorporados.
Se você realmente quiser links relativos ( TargetDir/File0 -> ../../SourceDir/File0
etc) para seus arquivos normais, você precisará usar find -type f
e executar mkdir -p
para criar a estrutura de diretório de destino, então find -type f
e executar ls -s
para cada arquivo.