GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ersetzen Sie symbolische Links durch Dateien

Wenn ich dich richtig verstanden habe der -L Flag der cp Befehl sollte genau das tun, was Sie wollen.

Kopieren Sie einfach alle symbolischen Links und sie werden durch die Dateien ersetzt, auf die sie verweisen.


Es könnte einfacher sein, einfach tar zu verwenden, um die Daten in ein neues Verzeichnis zu kopieren.

-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.

Sie könnten so etwas verwenden

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

Für einige Definitionen von "einfach":

#!/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

Führen Sie dieses Skript mit Linknamen als Argumente aus, z. bis find . -type l -exec /path/tos/script {} +


Linux
  1. Cat-Dateien mit Verzeichnis?

  2. Newline durch Nul ersetzen?

  3. Linux – Tar.gz täglich nur mit geänderten Dateien aktualisieren?

  4. Eine einfache Möglichkeit, doppelte Dateien durch Hardlinks zu ersetzen?

  5. Sichern Sie Ihre Dateien mit rsync

Ersetzen Sie unter Linux du durch Staub

Ersetzen Sie Manpages durch Tealdeer unter Linux

So laden und extrahieren Sie Tar-Dateien mit einem Befehl

So erstellen Sie symbolische Links in Linux

Erste Schritte mit dem Tar-Befehl

Viele ._-Dateien in einem tar