Slett filer og mapper i Linux: rm & rmdir guide

Kommandoene rm og rmdir er sentrale verktøy for å fjerne filer og mapper i Linux, macOS og andre Unix-baserte operativsystemer. Disse tilsvarer i stor grad kommandoene del og deltree i Windows og DOS. Det er essensielt å forstå at disse kommandoene er svært potente og tilbyr en rekke muligheter for å manipulere filsystemet.

Det er viktig å være oppmerksom på at filer og mapper slettet med rm og rmdir ikke havner i en papirkurv. De fjernes permanent fra systemet ditt. Hvis du ved en feiltakelse sletter noe, vil den eneste måten å gjenopprette dataene på, være fra en sikkerhetskopi.

Fjerne Filer med rm

Den enkleste bruken er å slette en enkelt fil i den gjeldende mappen. Skriv rm, et mellomrom, og filnavnet du ønsker å fjerne.

rm filnavn.txt

Hvis filen ikke ligger i den gjeldende arbeidskatalogen, må du oppgi en sti til filens plassering.

rm ./sti/til/filen/filnavn.txt

Du kan slette flere filer samtidig ved å angi flere filnavn etter kommandoen rm.

rm fil1.txt fil2.txt

Jokere (wildcards) kan brukes for å velge grupper av filer for sletting. * representerer et vilkårlig antall tegn, mens ? står for et enkelt tegn. For eksempel vil følgende kommando fjerne alle PNG-bildefiler i gjeldende mappe:

rm *.png

Denne kommandoen vil slette alle filer med et filnavn som slutter med et enkelt tegn. For eksempel fil.1 og fil.2, men ikke fil.12.

rm *.?

Hvis en fil er skrivebeskyttet, vil systemet be deg om bekreftelse før sletting. Du må svare med y eller n og trykke «Enter».

For å minske risikoen ved bruk av rm med jokere, kan du bruke alternativet -i (interaktivt). Dette krever at du bekrefter slettingen av hver enkelt fil.

rm -i *.dat

Alternativet -f (force) er motsatt av interaktivt. Det hopper over bekreftelser, selv om filene er skrivebeskyttet.

rm -f filnavn

Fjerne Mapper med rm

For å slette en tom mappe, bruk alternativet -d (directory). Du kan også bruke jokere (* og ?) i mappenavn, på samme måte som med filnavn.

rm -d mappe

Hvis du spesifiserer mer enn ett mappenavn, vil alle de angitte tomme mappene slettes.

rm -d mappe1 mappe2 /sti/til/mappe3

For å slette mapper som ikke er tomme, brukes alternativet -r (rekursivt). Dette vil fjerne mappen og alle filer og undermapper den inneholder.

rm -r mappe1 mappe2 mappe3

Dersom en mappe eller fil er skrivebeskyttet, vil du bli bedt om bekreftelse før sletting. For å slette mapper som ikke er tomme uten å bli spurt om bekreftelse, kombinerer du alternativene -r (rekursiv) og -f (force).

rm -rf mappe

Vær svært forsiktig med denne kommandoen. En feil med rm -rf kan medføre tap av data eller systemfeil. Det er risikabelt, og forsiktighet er viktig. For å forstå mappestrukturen og filene som vil bli slettet med rm -rf, bruk kommandoen tree.

Bruk apt-get for å installere denne pakken på Ubuntu eller andre Debian-baserte distribusjoner. For andre Linux-distribusjoner, bruk distribusjonens pakkebehandler.

sudo apt-get install tree

Kommandoen tree gir et lettfattelig diagram over mappestrukturen og filene under mappen den kjøres fra.

tree

Du kan også angi en sti til tree for å starte treet fra en annen mappe i filsystemet.

tree sti/til/mappe

Kommandoen rm har også opsjonene --one-file-system, --no-preserve-root og --preserve-root, men disse anbefales kun for erfarne brukere. Hvis noe går galt kan du ved et uhell slette alle systemfilene dine. Se kommandoens manualside for mer informasjon.

Fjerne Mapper med rmdir

Det finnes en annen kommando, rmdir, som også brukes for å slette mapper. Forskjellen mellom rm og rmdir er at rmdir kun kan slette mapper som er tomme. Den vil aldri slette filer.

Den enkleste bruken er å slette en enkelt tom mappe. På samme måte som med rm, kan du sende flere mappenavn til rmdir eller en sti til en mappe.

Slett en enkelt mappe i den gjeldende katalogen ved å sende navnet til rmdir:

rmdir mappe

Slett flere mapper ved å sende en liste med navn til rmdir:

rmdir mappe1 mappe2 mappe3

Slett en mappe som ikke er i gjeldende katalog ved å spesifisere hele stien til den mappen:

rmdir /sti/til/mappe

Hvis du forsøker å slette en mappe som ikke er tom, vil rmdir gi en feilmelding. I det følgende eksemplet vil rmdir slette katalogen klient, men den vil nekte å slette katalogen prosjekt fordi den inneholder filer. Prosjektmappen forblir uendret, og filene i den er urørt.

Når rmdir gir en feilmelding om at en mappe ikke er tom, slutter den å behandle mappene som ble sendt til den på kommandolinjen. Hvis du har bedt den om å slette fire mapper og den første inneholder filer, vil rmdir gi en feilmelding og stoppe videre behandling. Du kan tvinge den til å ignorere disse feilene med alternativet --ignore-fail-on-non-empty, slik at andre mapper blir behandlet.

I eksemplet nedenfor sendes to mapper til rmdir, arbeid/rapporter og arbeid/tilbud. Alternativet --ignore-fail-on-non-empty er inkludert i kommandoen. Mappen arbeid/rapporter inneholder filer, og rmdir kan derfor ikke slette den. Alternativet tvinger rmdir til å ignorere feilen og gå videre til neste mappe den må behandle, som er arbeid/tilbud. Denne mappen er tom, og rmdir sletter den.

Dette er kommandoen som ble brukt.

rmdir --ignore-fail-on-non-empty work/reports work/quotes

Du kan bruke alternativet -p (parents) for å slette en mappe og dens overordnede mapper. Dette fungerer fordi rmdir starter med målmappen og deretter beveger seg tilbake til overordnede. Den katalogen skal nå være tom, slik at den kan slettes av rmdir, og prosessen gjentas ved å gå tilbake i den gitte stien til rmdir.

I eksemplet under er kommandoen som sendes til rmdir:

rmdir -p work/invoices

Både fakturaer– og arbeid-mappene slettes som ønsket.

Uansett om du bruker Bash eller et annet skall, tilbyr Linux fleksible og kraftige kommandoer for sletting av mapper og filer direkte fra kommandolinjen. Noen foretrekker en arbeidsflyt som er sentrert rundt terminalen. Andre har kanskje ikke noe valg, og arbeider på servere uten et grafisk brukergrensesnitt eller i eksterne økter på et system som en Raspberry Pi. Disse kommandoene er ideelle for denne gruppen.

Men uansett hva slags arbeidsflyt du foretrekker, er disse kommandoene svært nyttige i shell-skript. Hvis et skript utløses av en cron-jobb, kan det automatisere rutinemessige oppgaver som å fjerne uønskede loggfiler. Ved bruk av disse kommandoene i skript, husk deres styrke, test alt grundig, og sørg for å ha en fersk sikkerhetskopi.