Como excluo links simbólicos que apontam para arquivos em uma determinada pasta?

1

Acho que isso é melhor explicar com um exemplo:

lrwxrwxrwx 1 root   root      21 Mar 31 08:44 awk -> /etc/alternatives/awk*
-rwxr-xr-x 1 root   root     45K Apr  8  2015 b43-fwcutter*
lrwxrwxrwx 1 root   root      35 Apr  1 21:42 backup-config -> /home/myuser/scripts/backup-config.sh
lrwxrwxrwx 1 root   root      37 Apr  1 21:42 backup-to-server -> /home/myuser/scripts/backup-to-server.sh

Eu quero excluir todos os links simbólicos que apontam para arquivos dentro de / home / myuser / scripts.

Neste exemplo. Quero que o backup-config e o backup-to-server sejam apagados.

Obrigado!

ps. Eu tenho outros links simbólicos na pasta que eu quero excluir, mas ele não inicia com o backup, então não posso usar um padrão.

    
por mrjayviper 01.04.2017 / 13:39

1 resposta

2

Faça um loop sobre os arquivos e combine os links simbólicos com um padrão. Isso deve funcionar para links diretos com caminhos absolutos (não algo como ../../something ou coisas que saltam através de vários links simbólicos).

for f in * ; do
    [ -L "$f" ] || continue;                      # skip anything but symlinks
    l=$(readlink "$f")                            # read the link contents
    case "$l" in 
        /home/myuser/scripts/*) echo rm "$f" ;;   # match against a pattern
    esac
done
    
por 01.04.2017 / 14:23

Tags