Com o comando:
ls -la *
Eu posso listar todos os meus links simbólicos.
Como posso remover todos os links simbólicos vinculados a uma pasta especial?
Por exemplo:
No meu diretório usr/local/bin
, tenho as seguintes entradas:
lrwxrwxrwx 1 root root 50 Apr 22 14:52 allneeded -> /usr/local/texlive/2011/bin/x86_64-linux/allneeded
lrwxrwxrwx 1 root root 47 Apr 22 14:52 amstex -> /usr/local/texlive/2011/bin/x86_64-linux/amstex
lrwxrwxrwx 1 root root 24 Apr 23 19:09 arara -> /home/marco/.arara/arara
Agora eu quero remover todos os links com o caminho /usr/local/texlive/
Respostas:
Leia a resposta alternativa . É ainda mais direto ao ponto, embora não tenha sido votado tão alto neste momento.
Você pode usar isso para excluir todos os links simbólicos:
com
find
versões modernas .Em versões mais antigas, talvez seja necessário:
Para limitar a um determinado destino de link, assumindo que nenhum dos caminhos contenha qualquer caractere de nova linha:
ou bem formatado
É
if
claro que também poderia incluir uma condição mais complexa, como combinar um padrão comgrep
.Adaptado ao seu caso:
ou bem formatado:
fonte
-print
no final dofind
comando para obter algum feedback visual.Com um moderno
find
que suporta-lname
:deve fazê-lo.
fonte
find /usr/local/bin
find
tem-lname
mais tempo do que eu o tenho mantido (desde 2003).find
eu realmente quis dizer GNUfind
. ;) Eu useiusr/local/bin
, porque é isso que o OP usou.A
find
solução é ótima.Caso sua descoberta não seja compatível
-lname
, aqui está outra maneira que usa apenas shell ereadlink
.fonte
Com
zsh
:$REPLY:P
resolve completamente o caminho para um link sem link simbólico, supondo que/usr/local/texlive
ele próprio seja livre de/usr/local/textlive
links simbólicos, ele removeria todos os arquivos que, após a resolução do link simbólico, permanecerem sob os quais incluiriam links para/usr/local/texlive/foo
mas também para../texlive/bar
ou para/usr/./local/texlive/whatever
ou para os/some/other/symlink
quais é um link simbólico apontando/usr/local/texlive
, etc. .fonte
Vá para o caminho do seu e defina-se a configuração do caminho
fonte
usr/local/bin
quegrep
está procurando,grep -E
é o caminho a percorrer. Caso contrário, não haveria resultados correspondentes. Tambémh
emls
não serve qualquer propósito aqui!-h, --human-readable : with -l, print sizes in human readable format (e.g., 1K 234M 2G)
. Para mais verman ls
ouman grep