GNU/Linux >> Linux Esercitazione >  >> Linux

Come faccio a spostare un collegamento simbolico relativo?

Puoi trasformare i percorsi relativi in ​​percorsi completi utilizzando readlink -f foo . Quindi faresti qualcosa del tipo:

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

MODIFICA:

Ho notato che desideri mantenere i percorsi relativi. In questo caso, dopo aver spostato il collegamento, puoi utilizzare symlinks -c per riconvertire i percorsi assoluti in percorsi relativi.


Questo è un perl soluzione che conserva i percorsi relativi:

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. Come rimuovere un collegamento simbolico a una directory?

  2. Come posso forzare solo percorsi relativi nell'output di ricerca?

  3. Come copiare i collegamenti simbolici?

  4. Come spostare una partizione in GNU/Linux?

  5. Come elencare catene di collegamenti simbolici?

Come creare collegamenti simbolici in Linux

Come rimuovere (eliminare) i collegamenti simbolici in Linux

Come creare un collegamento simbolico in Linux usando il comando Ln

Linux ln – Come creare un collegamento simbolico in Linux [Esempio di comando Bash]

Come spostare un gran numero di file in Linux

Che cosa sono i collegamenti simbolici in Linux? Come creare collegamenti simbolici?