Gå til innhold

sletting av symlinker når target slettes


petterg

Anbefalte innlegg

Skrevet

Sitter å lager et script som bl.a. skal slette en katalog og alle filer i den. Det som lager problemer er at det i noen tilfeller finnes symlinker som 'peker på' denne katalogen eller underkataloger.

Hvordan kan jeg få scriptet til å slette alle symlinker som mister sitt mål som følge av at katalogen slettes?

 

-pg

linux newbe

Videoannonse
Annonse
Skrevet

ehhhh..

 

prøvd: rm -rf [directory]

 

skal ærlig innrømme at jeg også hadde problemer med å fjerne mapper til å begynne med, men..

 

rm [symlink]

 

EDIT: ehh.. *leste en gang til og kom til den konklusjonen at det ikke er mulig*

Skrevet

Hmm mulig spørsmålet ikke kom godt nok frem.

 

Saken er at jeg skal slette en katalog (bruker rm -Rf [dir]). Da forsvinner katalogen og alt innhold. Ikke noe problem. Problemet kommer hvis det er en (eller flere) symlink som peker til den slettede katalogen (evt underkataloger). Da skulle jeg likt å også slette symlinken(e).

 

Jeg vet ikke hvor alle symlinkene befinner seg. Jeg vet heller ikke hva de heter, men jeg vet at de peker til den slettede katalogen eller underkataloger av denne.

Hvordan finner jeg disse symlinkene?

Det er helt sikkert mulig på et eller annet vis.

 

-pg

Litt mindre newbe enn i går på samme tid

Skrevet

Jeg nærmer meg en løsning...

 

find -type l -printf "%p %l n" |grep TARGET 

 

klarer å liste de symlinkene som skal slettes, men så var det å få slettet dem da.

Hvordan sender man resultatet av find | grep til rm?

Skrevet
find / -lname TARGET -exec rm -f {} ; -

 

Mulig jeg er for ny i linux til å skjønne den.

 

Den funker tildels. Man må være presis i definisjonen av target. Target må være relativ path i forhold til symlinkens plassering. Hvis f.x symlinken ligger i /tmp og peker til /tmp/test/test2 må target være "test/test2/" uansett om hvilken katalog man søker fra.

Å sette target = /tmp/test/test2/ funker ikke.

 

Hvis den samme symlinken hadde ligget i /tmp/test2 ville den ikke blitt funnet av find med samme target som om den lå i /tmp.

 

Dermed forsvinner jo noe av poenget med å søke, man er avhengig av å vite hvor linken er for å finne den.

 

-pg

Skrevet

Hvis man er konsekvent og lager alle symlinker globale funker det å søke på globale target (men ikke relative).

Det gjelder bare å være konsekvent.

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...