GNU/Linux >> Linux の 問題 >  >> Linux

相対シンボリック リンクを移動するにはどうすればよいですか?

readlink -f foo を使用して相対パスを完全パスに変換できます .したがって、次のようにします:

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

編集:

パスを相対的に維持したいことに気付きました。この場合、リンクを移動した後、 symlinks -c を使用できます 絶対パスを相対パスに変換します。


これは perl です 相対パスを保持するソリューション:

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. シンボリック リンク libc.so.6 を削除した後に回復するにはどうすればよいですか?

  2. ディレクトリへのシンボリックリンクを削除するには?

  3. 検索出力で相対パスのみを強制するにはどうすればよいですか?

  1. シンボリックリンクをコピーするには?

  2. GNU/Linux でパーティションを移動するには?

  3. シンボリック リンク チェーンを一覧表示するには?

  1. Linuxでハードリンクとシンボリックリンクを作成する方法

  2. 絶対/正規/相対パス?

  3. シンボリックリンクを圧縮するには?