GNU/Linux >> Tutoriales Linux >  >> Linux

Reemplazar enlaces simbólicos con archivos

Si te entendí bien el -L bandera de los cp el comando debería hacer exactamente lo que quieres.

Simplemente copie todos los enlaces simbólicos y los reemplazará con los archivos a los que apuntan.


Podría ser más fácil simplemente usar tar para copiar los datos a un nuevo directorio.

-H      (c and r mode only) Symbolic links named on the command line will
        be followed; the target of the link will be archived, not the
        link itself.

Podrías usar algo como esto

tar -hcf - sourcedir | tar -xf - -C newdir

tar --help:
-H, --format=FORMAT        create archive of the given format
-h, --dereference          follow symlinks; archive and dump the files they point to

Para algunas definiciones de "fácil":

#!/bin/sh
set -e
for link; do
    test -h "$link" || continue

    dir=$(dirname "$link")
    reltarget=$(readlink "$link")
    case $reltarget in
        /*) abstarget=$reltarget;;
        *)  abstarget=$dir/$reltarget;;
    esac

    rm -fv "$link"
    cp -afv "$abstarget" "$link" || {
        # on failure, restore the symlink
        rm -rfv "$link"
        ln -sfv "$reltarget" "$link"
    }
done

Ejecute este script con nombres de enlaces como argumentos, p. hasta find . -type l -exec /path/tos/script {} +


Linux
  1. Comportamiento de cd/bash en enlaces simbólicos

  2. Usar find y tar con archivos con caracteres especiales en el nombre

  3. Eliminar todos los enlaces simbólicos de archivos en un solo comando

  4. ¿Cómo crear enlaces simbólicos a todos los archivos (clase de archivos) en un directorio?

  5. ¿Cómo tar archivos con un orden ordenado?

Reemplace du con polvo en Linux

Cómo descargar y extraer archivos Tar con un solo comando

Cómo crear enlaces simbólicos en Linux

Primeros pasos con el comando Tar

tar/gzip excluyendo ciertos archivos

¿Cómo copiar enlaces simbólicos?