cp --remove-destination "$(readlink <symlink>)" <symlink>
Eu tenho vários links simbólicos para outros arquivos em um diretório. Eu quero converter esses links em arquivos independentes.
Existe um comando que faz isso?
Enquanto Ignacio é uma boa resposta, eu queria automatizar o processo para cada arquivo que é um link simbólico no diretório atual e subdiretórios.
Isso faz o truque:
encontre. -tipo l -exec cp \ "{} \" \ "{}. tmp $$ \" \; -exec mv \ "{}. tmp $$ \" \ "{} \" \;
Espero que isso ajude!
A primeira maneira que me vem à mente é copiar todos os links para novos arquivos e, em seguida, excluir todos os links.
cp <link> <link>.new
rm <link>
Espero que os arquivos tenham algum tipo de estrutura de nomenclatura comum, para que você possa usar o curinga e executar os comandos apenas uma vez, caso contrário, talvez você queira escrever um script de shell simples
FYI: O Mac OS X não suporta o sinalizador - remove-destination , por isso escrevi um script simples para colocar em seu diretório / usr / bin:
FILE=$1
TEMP=$1".tmp"
mv $FILE $TEMP
if [ -e $TEMP ]
then
cp "$(readlink $TEMP)" $FILE
if [ -f $FILE ]
then
rm $TEMP
else
echo "unln failed."
fi
fi
Este permite usar curingas:
for FILE in "$@"
do
TEMP=$FILE".tmp"
if [ -h $FILE ]
then
mv $FILE $TEMP
if [ -e $TEMP ]
then
cp "$(readlink $TEMP)" $FILE
if [ -f $FILE ]
then
rm $TEMP
else
echo "unln failed for link: $FILE"
fi
fi
fi
done