web-dev-qa-db-ja.com

シンボリックリンクを元のファイルで上書きする

たとえば、シンボリックリンクファイルのあるディレクトリがあります。

_/home/user/symlink/$(*symlink_file_name1*).mkv
/home/user/symlink/$(*symlink_file_name2*).mkv
_

そして、(シンボリックリンクファイルの)元のファイルを含む別のディレクトリがあります。

_/home/user/original/$(*original_file_name1*).mkv
/home/user/original/$(*original_file_name2*).mkv
_

したがって、問題は、すべての_.mkv_ファイルを_/home/user/symlink/_から元のファイルに「変換」することですが、同じファイル名を使用します。

シンボリックリンクフォルダに、元のファイルとその名前をすべて入れたい

_symlink name $(*symlink_file_name*)
_

では、_/home/user/original/$original_file_name1.mkv_を/home/user/symlink/$(symlink_file_name1).mkvまたはそのようなものに移動できますか?

2
Julien Blanchon

GNU readlinkを使用して、シンボリックリンクを元のファイル名に解決します。

まず、ディレクトリ設定を模倣します。

$ mkdir original "symlink dir"
$ touch original/file1 original/file2
$ cd "symlink dir"/
$ ln -s ../original/file1 link1
$ ln -s ../original/file2 link2
$ cd ..

次に、ファイルをコピーします。

$ for link in "./symlink dir"/*; do
> orig="$(readlink -f "$link")"
> rm "$link"
> cp -v "$orig" "$link"
> done
‘/home/user/original/file1’ -> ‘./symlink dir/link1’
‘/home/user/original/file2’ -> ‘./symlink dir/link2’
1
Kevin Kruse