Como eu faço symlink de cada um dos arquivos em um diretório para outro diretório?

12

Se eu tiver um diretório /foo com alguns arquivos, como vincular cada entrada em /foo em /bar/ ?

Por exemplo, se /foo tiver os arquivos a , b e c , desejo criar três links simbólicos:

  • /bar/a -> /foo/a
  • /bar/b -> /foo/b
  • /bar/c -> /foo/c
por Steven Xu 11.02.2011 / 18:11

3 respostas

12

Você pode usar (GNU) cp com a opção --symbolic-link :

prompt$ mkdir foo
prompt$ cd foo
prompt$ touch a b c
prompt$ mkdir ../bar
prompt$ cd ../bar
prompt$ cp --symbolic-link ../foo/* .
prompt$ ls -l
total 0
lrwxrwxrwx. 1 hlovdal hlovdal 8 Jun 12 16:24 a -> ../foo/a
lrwxrwxrwx. 1 hlovdal hlovdal 8 Jun 12 16:24 b -> ../foo/b
lrwxrwxrwx. 1 hlovdal hlovdal 8 Jun 12 16:24 c -> ../foo/c
prompt$
    
por 12.06.2011 / 16:29
15

Experimente:

ln -s /foo/* /bar

O diretório de origem, conforme especificado na pergunta, é /foo . Observe que ele deve ser totalmente especificado (por exemplo, começando no diretório raiz), portanto, outros exemplos ficariam assim:

ln -s /some/dir/with/baz/* destdir
ln -s /dir/to/link/from/* /dir/to/link/to
ln -s $PWD/stuff/* more/stuff
    
por 11.02.2011 / 18:36
1

Algo parecido com isto?

cd /foo
for f in *; do ln -s $PWD/$f /bar; done
    
por 11.02.2011 / 18:28