用原始文件覆盖符号链接

用原始文件覆盖符号链接

我有一个包含一些符号链接文件的目录,例如:

/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类似的地方吗?

答案1

使用 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’

相关内容