Hvordan fjerne filer rekursivt i Linux

Hvordan fjerne filer rekursivt i Linux
Denne Linux -opplæringen forklarer hvordan du fjerner filer rekursivt ved å bruke forskjellige tilgjengelige teknikker.

Etter å ha lest denne artikkelen, vil du kunne finne og fjerne enkelt- eller flere filer fra kommandolinjen. Denne opplæringen er optimalisert for både nye og erfarne Linux -brukere.

Den første delen av denne opplæringen forklarer hvordan du fjerner filer rekursivt (kataloger med alt innholdet og underkatalogenes innhold). Nedenfor la jeg også til instruksjoner for å fjerne rekursivt visse typer filer avhengig av størrelse, utvidelse, oppretting eller modifiseringstid og tillatelser.

Alle praktiske eksempler i dette dokumentet inneholder skjermbilder for å gjøre det enkelt for hver Linux -bruker å forstå og anvende dem på deres behov.

Slette alle filer rekursivt i Linux

Den første delen viser hvordan du bruker rm (Fjern) Kommando for å slette en katalog med alt innholdet, inkludert alle underkataloger med filene sine og flere underkataloger.

De rm Kommando brukt med -r Flaget vil fjerne alle katalogenes innhold uavhengig av deres type.

Men først, la oss se katalogene i mitt hjem ved å bruke ls kommando.

ls ~/


Som du ser har jeg 5 kataloger: Desktop, DIR2, dokumenter, nedlastinger, og Removercurdir.

La oss se innholdet i katalogen som heter Removercurdir Bruke kommandoen tre Som vist på skjermbildet nedenfor.

Tree Removercurdir



Ifølge tre output Removercurdir Katalogen inneholder to kataloger som inneholder underkataloger og en fil inne fjernecurdir: Katalogen dir1, med Otherdir og OtherDir2 underkataloger, og katalogen Dir2 inneholder en fil som heter File3.

La oss si at vi vil fjerne fjernecurdir og alt innholdet inkludert alle filer og underkataloger. Den riktige kommandoen er rm Kommando etterfulgt av -r flagg som vist i syntaksen nedenfor.

rm -r


Dermed, hvis jeg vil fjerne Removercurdir Med alt innholdet kjører jeg:

RM -r Removercurdir/



Den påfølgende ls Utgangen viser katalogen, og alt innholdet ble fjernet med hell.

Hvordan fjerne filer rekursivt etter størrelse

Denne delen viser hvordan du rekursivt sletter filer mindre enn 10 megabyte ved å bruke kommandoen finne.

Syntaksen er følgende:

finne -type f -størrelse - -exec rm +


Merk at i eksemplet nedenfor bruker jeg sudo å få privilegier å fjerne beskyttede filer.

sudo find /var /log -type f -størrelse -10m -exec rm +



Syntaksen for å fjerne filer som er større enn en bestemt størrelse er veldig lik. Minus (-) symbolet må erstattes av et pluss-symbol (+). Den nøyaktige syntaksen vises nedenfor.

finne -type f -størrelse + -exec rm +


I eksemplet nedenfor vil jeg bruke forrige syntaks for å fjerne filer større enn 1 GB.

finn /var /log -type f -størrelse +1g -exec rm +


Hvordan fjerne filer rekursivt i forlengelse (filtype)

Det nåværende kapittelet forklarer hvordan du sletter filer rekursivt i forlengelse eller filtype.

Hjemme hos meg har jeg en katalog som heter testhint. La oss se innholdet ved å bruke tre kommando.

tre testhint/



Som du kan se, inneholder foreldrekatalogtesthintet en fil (File1.txt) og to underkataloger: testhint2 som inneholder file3.TXT og Testhint3 -underkatalogen som inneholder File3 og noe.tekst.

La oss anta at du bare vil fjerne alle TXT -filer. Syntaksen er følgende:

finne -type f -navn '*.'-print -delete


For å fjerne alle TXT -filer rekursivt i overordnet katalog testhint, Jeg kjører kommandoen vist på figuren nedenfor.

finn ~/testhint -type f -navn '*.txt '-print -delete



Som du kan se ble alle TXT -filer fjernet, og bare File3 Uten forlengelse gjenstår.

Tree testhint


Du kan også slette filer i forlengelsen av ved hjelp av finne sammen med Exec Kommandoer, som jeg vil forklare nedenfor.

La oss se et nytt scenario med samme katalogstruktur, men forskjellige filer.


Bildet ovenfor viser 4 loggfiler og 3 filer uten utvidelse.

Syntaksen for å fjerne filer med utvidelser ved hjelp av -Exec er følgende:

finne -type f -navn '*.'-exec rm -f \;


Dermed for å fjerne .Loggfiler fra forrige skjermbilde, jeg kjørte kommandoen nedenfor.

finn ~/testhint -type f -navn '*.log '-exec rm -f \;



Bildet over viser alle .Logg Filer ble slettet mens andre filer gjensto.

De xargs Kommandoen tilbyr den samme løsningen. Forskjellen mellom xargs og Exec er at EXEC kjører RM -funksjonen hver gang en fil samsvarer med tilstanden. Kommandoen Xargs utfører RM -kommandoen en gang for alle funnet filer som samsvarer med tilstanden.

Syntaksen for å fjerne alle filer i forlengelse av Find og XArgs er følgende:

finne -Navn "*."-print0 | Xargs -0 RM


Det nye scenariet som er avbildet på skjermdumpen nedenfor viser fem .C -filer i forskjellige underkataloger og fem filer uten .c forlengelse.


Å fjerne alt .c filer bruker xargs Jeg kjører kommandoen som vist nedenfor.

finne . -Navn "*.c "-print0 | xargs -0 rm



Igjen kan du se at de valgte utvidelsesfilene ble slettet med hell.

Slette alle filer rekursivt basert på tillatelser

La oss sjekke det nye innholdet i testhint katalog.

Det er fire filer med full tillatelser (File2, File3.C, File6.C og File7).

La oss nå anta at du vil finne og fjerne alle filer med full tillatelser for alle.

Syntaksen er følgende:

finne -perm -print0 | Xargs -0 RM


For å fjerne alle filer med full tilgang til alle brukere, utfører jeg kommandoen nedenfor.

Finn ~/testhint -perm 777 -print0 | Xargs -0 RM


Hvordan du sletter filer rekursivt basert på modifisering eller opprettingstid

Den siste delen av denne opplæringen forklarer hvordan du sletter filer rekursivt etter opprettelse eller modifiseringstid.

Syntaksen er følgende:

Finn ~/testhint -perm 777 -print0 | Xargs -0 RM


Hvis du vil slette filer som er opprettet eller endret den siste dagen (siste 24 timer), kan du kjøre følgende kommando, der 1 er antall dager, og minus (-) symbolet spesifiserer filer som er opprettet eller endret før det definerte antall dager på dager.

finne -Skriv f -mtime -1 -delete


For å fjerne filer som er opprettet eller endret før en døg.

finne -type f -mtime +1 -delete

Konklusjon

Siden Linux er et veldig allsidig og fleksibelt operativsystem, har brukere forskjellige teknikker for å få samme resultat. Alle alternativene forklart ovenfor er gyldige for nesten alle Linux -distribusjoner. Noen av kommandoene er til og med nyttige for noen UNIX -systemer. Som du ser er det enkelt å implementere dem, og enhver Linux -bruker kan gjøre det uavhengig av kunnskapsnivået deres. For å slette filer rekursivt i henhold til andre betingelser, sjekk hovedsiden til hver kommando beskrevet i denne artikkelen.