Substituir o symlink pelo arquivo original

2

Eu tenho um diretório com algum arquivo symlink, por exemplo:

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

E eu tenho outro diretório com o arquivo original (do arquivo symlink):

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

Portanto, o problema é "transformar" todo o arquivo .mkv de /home/user/symlink/ no arquivo original MAS com o mesmo nome de arquivo.

Lá na pasta do symlink, eu quero ter todos os arquivos originais com o nome deles

symlink name $(*symlink_file_name*)

Então, posso mover /home/user/original/$original_file_name1.mkv para /home/user/symlink/$(symlink_file_name1).mkv ou algo assim?

    
por Julien Blanchon 21.08.2018 / 23:27

1 resposta

1

Usando o GNU readlink para resolver o link simbólico para o nome do arquivo original:

Primeiro eu imito sua configuração de diretório:

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

Copie os arquivos:

$ 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’
    
por 21.08.2018 / 23:43