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

Wie verschiebe ich einen relativen symbolischen Link?

Mit readlink -f foo können Sie relative Pfade in vollständige Pfade umwandeln . Sie würden also etwa Folgendes tun:

ln -s $(readlink -f $origlink) $newlink
rm $origlink

BEARBEITEN:

Mir ist aufgefallen, dass Sie die Pfade relativ halten möchten. In diesem Fall können Sie nach dem Verschieben des Links symlinks -c verwenden um die absoluten Pfade wieder in relative Pfade umzuwandeln.


Dies ist ein perl Lösung, die relative Pfade beibehält:

use strictures;
use File::Copy qw(mv);
use Getopt::Long qw(GetOptions);
use Path::Class qw(file);
use autodie qw(:all GetOptions mv);

my $target;
GetOptions('target-directory=s' => \$target);
die "$0 -t target_dir symlink1 symlink2 symlink3\n" unless $target && -d $target;

for (@ARGV) {
    unless (-l $_) {
        warn "$_ is not a symlink\n";
        next;
    }
    my $newlink = file(readlink $_)->relative($target)->stringify;
    unlink $_;
    symlink $newlink, $_;
    mv $_, $target;
}

Linux
  1. So erstellen Sie harte und symbolische Links in Linux

  2. Wie komprimiert man einen symbolischen Link?

  3. So erstellen Sie einen Link zu einem Verzeichnis

  4. Wie nach dem Löschen des symbolischen Links libc.so.6 wiederherstellen?

  5. Wie listet man symbolische Linkketten auf?

So erstellen Sie symbolische Links in Linux

So entfernen (löschen) Sie symbolische Links in Linux

So erstellen Sie einen symbolischen Link in Linux mit dem Ln-Befehl

Linux ln – So erstellen Sie einen symbolischen Link in Linux [Beispiel-Bash-Befehl]

So verschieben Sie eine große Anzahl von Dateien in Linux

Was sind symbolische Links in Linux? Wie erstellt man symbolische Links?