Rsync

用原始文件覆蓋符號連結

  • August 22, 2018

我有一個包含一些符號連結文件的目錄,例如:

/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的地方嗎?

使用 GNUreadlink將符號連結解析為原始文件名:

首先我模仿你的目錄設置:

$ 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’

引用自:https://unix.stackexchange.com/questions/463982