petterg Skrevet 15. september 2003 Del Skrevet 15. september 2003 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 Lenke til kommentar
xeon Skrevet 15. september 2003 Del Skrevet 15. september 2003 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* Lenke til kommentar
petterg Skrevet 16. september 2003 Forfatter Del Skrevet 16. september 2003 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 Lenke til kommentar
petterg Skrevet 16. september 2003 Forfatter Del Skrevet 16. september 2003 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? Lenke til kommentar
GNUfan Skrevet 16. september 2003 Del Skrevet 16. september 2003 find / -lname TARGET -exec rm -f {} ; - Lenke til kommentar
petterg Skrevet 16. september 2003 Forfatter Del Skrevet 16. september 2003 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 Lenke til kommentar
petterg Skrevet 16. september 2003 Forfatter Del Skrevet 16. september 2003 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. Lenke til kommentar
iDude Skrevet 16. september 2003 Del Skrevet 16. september 2003 Fant dette skriptet som finner linker som "peker i det blå".. #! /bin/sh find . -type l -print | perl -nle '-e || print' Lenke til kommentar
petterg Skrevet 18. september 2003 Forfatter Del Skrevet 18. september 2003 Fant dette skriptet som finner linker som "peker i det blå".. #! /bin/sh find . -type l -print | perl -nle '-e || print' nyttig Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå