for f in $(find -type l);do cp --remove-destination $(readlink $f) $f;done;
- Comprueba los enlaces simbólicos en el directorio y los subdirectorios actuales
find -type l
- Obtener la ruta del archivo vinculado
readlink $f
- Elimine el enlace simbólico y copie el archivo
cp --remove-destination $(readlink $f) $f
No hay un solo comando para convertir un enlace simbólico en un archivo normal. La forma más directa es usar readlink
para encontrar el archivo al que apunta un enlace simbólico y luego copiar ese archivo sobre el enlace simbólico:
cp --remove-destination `readlink bar.pdf` bar.pdf
Por supuesto, si bar.pdf
es, de hecho, un archivo regular para empezar, entonces esto destruirá el archivo. Por lo tanto, sería aconsejable realizar algunas comprobaciones de cordura.
Solo una repetición de las respuestas de otros, pero agregando la "verificación de cordura" para garantizar que el enlace pasado sea en realidad un enlace simbólico:
removelink() {
[ -L "$1" ] && cp --remove-destination "$(readlink "$1")" "$1"
}
Esto dice que si el archivo es un enlace simbólico, ejecute el comando de copia.