我有一个包含一些符号链接文件的目录,例如:
/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’