Criação de link simbólico massivo usando loop no bash

2

Eu apenas estou me perguntando se seria possível criar uma quantidade massiva de links simbólicos usando um loop for?

Por exemplo, eu tenho um monte de diretórios no meu diretório / tmp (eu sei, não recomendo) e eu não quero movê-los para fora.

Em vez disso, eu só quero tê-los no meu diretório raiz usando links simbólicos.

Aqui está o que eu fiz, mas, infelizmente, não funciona de forma alguma:

for directories in /tmp/; do ln -s /tmp/$directories /$directories; done

Então, se alguém pudesse me dar uma dica, seria maravilhoso ;-) Obrigado.

    
por Dr I 09.10.2012 / 12:10

5 respostas

3

Tente isso.

cd /tmp && for i in 'ls '; do ln -s $i /$i; done
    
por 09.10.2012 / 12:37
1

O bloco a seguir criará links conforme explicado.

Se você quiser filtrar alguns nomes de / tmp; use o interruptor -name para encontrar.

Se você quiser maior profundidade, ajuste / remova -maxdepth switch

cd / 
find /tmp/ -maxdepth 1 -type d -exec ln -s {} \;

Para criar esses links, você precisa de permissões de gravação em /

    
por 09.10.2012 / 12:32
1

Ok, então, trabalho feito graças a todos por suas dicas.

Aqui está minha solução simples:

 for i in $(ls); do dir=$i; ln -s /tmp/$dir /$dir; done

Et voila: D

Obrigado, comunidade do StackExchange mais uma vez; -)

    
por 09.10.2012 / 12:52
1
for directories in 'find /tmp/ -type d'
do
  ln -s /tmp/$directories /$directories;
done
    
por 09.10.2012 / 12:15
0

Você precisa ter permissões de gravação no diretório em que deseja que o link simbólico seja criado. Tenha em mente que o / tmp é (normalmente) limpo na inicialização e pode ser limpo periodicamente durante o tempo de funcionamento da máquina, então confiar em coisas que persistem em / tmp o incomodará, mais cedo ou mais tarde.

    
por 09.10.2012 / 12:15