rm para remover um dir, quaisquer links simbólicos e destinos de links simbólicos? [duplicado]

3

Eu tenho dois diretórios: /all/origins/ & /all/links/ .

Tudo em links/ aponta individualmente para algo em origins/ , mas nem tudo em origins/ está vinculado em links/ . (Quadrados, retângulos e hierarquia categórica, get i?) Estes são links simbólicos ( ln -s ), e não hard links.

Tudo em 1. links/ precisa ser excluído, junto com 2. os destinos de links simbólicos em origins/ (sem saber se estão em origins/ ) e 3. o diretório links/ em si.

Qual rm comando do Unix devo digitar para remover o diretório links/ inteiro E todos os destinos com link simbólico vinculados a origins/ ?

Estou procurando algo como: rm -R /all/links ou rm -r --follow-all-ln /all/links .

Se um comando rm com parâmetros não fizer o trabalho, diga isso explicitamente, pois essa é a minha preferência e está implícita no título (o Unix & Linux pode fazer isso via rm sem do loop? - somente se isso não funcionar, por favor informe e explique o que é do loop.)

    
por Jesse Steele 23.11.2018 / 00:16

1 resposta

3

Primeiro, faça backup de seus dados caso algo dê errado.

O que entendi é que você deseja excluir todo o conteúdo do diretório /all/links/ e o arquivo para o qual os links dentro desse diretório estão apontando.

Não há como fazer isso com um simples comando Unix como você preferir, mas ele funcionará com um script simples.

#!/bin/bash

for i in /all/links/*
do
rm  "$(readlink -f $i)"
rm "$i"
done

rmdir /all/links

Como você disse, todos os arquivos dentro de /all/links/ são links simbólicos, portanto, não é necessário verificar cada valor de i , seja um link ou não.

    
por 23.11.2018 / 00:30

Tags