人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Linuxでシンボリックリンクの付け直しをする方法

ディレクトリ~/gaga 以下に、~/gogo以下のファイルやディレクトリへのシンボリックリンクが大量かつ階層的に存在します。

しかしファイルの実体が~/gogo以下から~/gege以下に移動してしまいました
~/gogo以下は別の用途で使うので、 ln -s ~/gege ~/gogo として解決することはできません。

というわけで、スクリプトで一気にリンク先を付け直す方法を教えてください。

ただし、~/gaga以下にはシンボリックリンクでないファイルや、~/gege以下のファイルではないものへのシンボリックリンクも混じっています。これは変更したくありません。

shかpythonが希望ですがcshやperlでも可とします
そのまま動くスクリプトでお願いします。

●質問者: pogemutaBN
●カテゴリ:コンピュータ
✍キーワード:csh Linux Perl Python sh
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● mjy
●80ポイント ベストアンサー
#! /bin/sh

target=~/gaga
from=~/gogo
to=~/gege

find $target -lname $from'/*' -printf '%l %p\n' |sed "s#^$from#ln -fs $to#" |sh

2 ● kick_m
●0ポイント

シェルスクリプトというものを勉強してください。http://www


3 ● shiumachi
●10ポイント

こんな感じでどうでしょうか。

リンク先のパス名の中に gogo を含む全てのシンボリックリンクを対象に、リンク先を強制的に ~/gege/ 以下のファイルとするよう書き換えました。


◎質問者からの返答

すいませんが、肝心の所が読めません

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ