Android

Hvordan fjerne (slette) katalog i Linux

Администрирование Linux. Лекция 2

Администрирование Linux. Лекция 2

Innholdsfortegnelse:

Anonim

Det er flere forskjellige måter å fjerne kataloger i Linux-systemer. Hvis du bruker en Desktop File Manager som Gnome's Files eller KDE's Dolphin, kan du slette filer og kataloger ved å bruke managerens grafiske brukergrensesnitt. Men hvis du jobber med en hodeløs server eller vil fjerne flere kataloger samtidig, er det beste alternativet å slette katalogene (mappene) fra kommandolinjen.

, vil vi forklare hvordan du sletter kataloger i Linux ved å bruke rmdir , rm og find kommandoer.

Før du begynner

Når du fjerner en katalog ved å bruke din Desktop File Manager, blir katalogen faktisk flyttet til papirkurven og kan enkelt gjenopprettes.

Vær ekstra forsiktig når du fjerner filer eller kataloger fra kommandolinjen, fordi når katalogen er slettet ved hjelp av kommandoene som er forklart, kan den ikke gjenopprettes fullstendig.

På de fleste Linux-filsystemer krever sletting av en katalog skrivetillatelse for katalogen og dens innhold. Ellers får du feilen "Operasjon ikke tillatt".

Katalognavn med et mellomrom i dem må slippe unna med et tilbakeslag ( / ).

Fjerne kataloger med rmdir

rmdir er et kommandolinjeverktøy for å slette tomme kataloger. Det er nyttig når du bare vil slette en katalog hvis den er tom, uten å måtte sjekke om katalogen er tom eller ikke.

Hvis du vil slette en katalog med rmdir , skriver du kommandoen etterfulgt av navnet på katalogen du vil fjerne. For å slette en katalog som heter dir1 du for eksempel:

rmdir dir1

Hvis katalogen ikke er tom, får du følgende feil:

rmdir: failed to remove 'dir1': No such file or directory

I dette tilfellet må du bruke rm kommandoen eller fjerne kataloginnholdet manuelt før du kan slette det.

Fjerne kataloger med rm

rm er et kommandolinjeverktøy for å slette filer og kataloger. I motsetning til rmdir kan rm kommandoen slette både tomme og ikke-tomme kataloger.

Som standard fjerner ikke rm kataloger når det brukes uten noe alternativ. For å slette en tom katalog, bruk alternativet -d ( --dir ) og for å slette en ikke-tom katalog og alt innholdet bruker du alternativet -r (- --recursive eller -R ).

For eksempel for å slette en katalog som heter dir1 sammen med alt innholdet du skriver:

rm -r dir1

Hvis en katalog eller en fil i katalogen er skrivebeskyttet, blir du bedt om å bekrefte slettingen. For å fjerne en katalog uten å bli bedt om det, bruk alternativet -f :

rm -rf dir1

For å fjerne flere kataloger samtidig, bruk rm kommandoen etterfulgt av navnene på katalognavnene som er skilt med mellomrom. Kommandoen nedenfor vil fjerne hver oppførte katalog og innholdet:

rm -r dir1 dir2 dir3

Alternativet -i ber rm be deg om å bekrefte sletting av hver underkatalog og fil. Hvis katalogen inneholder mange filer, kan dette være lite irriterende, så du kan vurdere å bruke alternativet -I vil spørre deg bare én gang før du fortsetter med slettingen.

rm -rI dir1

For å fjerne katalogtypen y og trykke Enter .

rm: remove 1 argument recursively? y

Du kan også bruke vanlige utvidelser for å matche og slette flere kataloger. For å fjerne alle kataloger på første nivå i den gjeldende katalogen som slutter med _bak , bruker du for eksempel følgende kommando:

rm -r *_bak

Det kan være risikabelt å bruke regelmessige utvidelser når du fjerner kataloger. Det anbefales først å liste opp katalogene med ls kommandoen, slik at du kan se hvilke kataloger som blir slettet før du kjører rm kommandoen.

Fjerne kataloger med find

find er et kommandolinjeverktøy som lar deg søke etter filer og kataloger basert på et gitt uttrykk og utføre en handling på hver matchede fil eller katalog.

Det vanligste scenariet er å bruke find kommandoen til å slette kataloger basert på et mønster. For å slette alle kataloger som slutter med _cache i den gjeldende arbeidskatalogen, vil du for eksempel slette:

find. -type d -name '*_cache' -exec rm -r {} +

La oss analysere kommandoen over:

  • /dir - rekursivt søk i gjeldende arbeidskatalog ( . ). -type d - begrenser søket til kataloger. -name '*_cache' - bare søk i kataloger som slutter med _cache -exec - utfører en ekstern kommando med valgfrie argumenter, i dette tilfellet som er rm -r . {} + - legger de funnet filene til slutten av rm kommandoen.

Fjerner alle tomme kataloger

For å fjerne alle tomme kataloger i et katalogtre du bruker:

find /dir -type d -empty -delete

Her er en forklaring på alternativene som brukes:

  • /dir - rekursivt søk i /dir katalogen. -type d - begrenser søket til kataloger. -empty - begrenser søket bare til tomme kataloger. -delete - sletter alle funnet kataloger som er funnet i undertreet. -delete kan bare slette tomme kataloger.

Bruk alternativet- -delete med ekstrem forsiktighet. Kommandolinjen for finn blir evaluert som et uttrykk, og hvis du legger til alternativet-slett først, vil kommandoen slette alt under startpunktene du spesifiserte. Bruk alltid -delete som det siste alternativet, og før du sletter, må du teste kommandoen først uten alternativet -delete .

/ bin / rm: Argumentlisten er for lang

Denne feilmeldingen vises når du bruker rm kommandoen til å fjerne en katalog som inneholder et enormt antall filer. Dette skjer fordi antallet filer er større enn systemgrensen for størrelsen på kommandolinjeargumentet.

Det er flere forskjellige løsninger på dette problemet. Du kan for eksempel cd til katalogen og manuelt eller bruke en løkke for å fjerne underkataloger en etter en.

Den enkleste løsningen er først å slette alle filene i katalogen med find kommandoen og deretter slette katalogen:

find /dir -type f -delete && rm -r /dir

Konklusjon

Med rm og find kan du slette kataloger basert på forskjellige kriterier raskt og effektivt.

Slette kataloger er en enkel og enkel prosess, men du må være forsiktig med å slette viktige data.

rm rmdir finn terminal