Come rimuovere i file in modo ricorsivo in Linux

Come rimuovere i file in modo ricorsivo in Linux
Questo tutorial Linux spiega come rimuovere i file in modo ricorsivo utilizzando diverse tecniche disponibili.

Dopo aver letto questo articolo, sarai in grado di trovare e rimuovere file singoli o più dalla riga di comando. Questo tutorial è ottimizzato sia per gli utenti Linux nuovi che esperti.

La prima sezione di questo tutorial spiega come rimuovere i file in modo ricorsivo (directory con tutti i loro contenuti e contenuti delle sottodirectory). Di seguito ho anche aggiunto istruzioni per rimuovere in modo ricorsivo alcuni tipi di file in base alle loro dimensioni, estensione, creazione o tempo di modifica e autorizzazioni.

Tutti gli esempi pratici in questo documento contengono schermate per rendere facile per ogni utente Linux comprenderli e applicarli alle loro esigenze.

Eliminazione di tutti i file in modo ricorsivo in Linux

La prima sezione mostra come usare il Rm (Rimuovi) Comando per eliminare una directory con tutto il suo contenuto, comprese tutte le sottodirectory con i loro file e le sottodirectory aggiuntive.

IL Rm comando usato con -R La bandiera rimuoverà il contenuto di tutte le directory indipendentemente dal loro tipo.

Ma prima, vediamo le directory nella mia casa usando il ls comando.

ls ~/


Come puoi vedere, ho 5 directory: Desktop, dir2, documenti, download, E RemoveRecurdir.

Vediamo il contenuto della directory denominata RemoveRecurdir usando il comando albero Come mostrato nello screenshot seguente.

Tree Removerecurdir



Secondo il albero Output il RemoveRecurdir La directory contiene due directory che contengono sottodirectory e un file all'interno removecurdir: The Directory dir1, con Altro E AltroDir2 sottodirectory e directory dir2 contiene un file denominato File3.

Diciamo che vogliamo rimuovere il removecurdir e tutti i suoi contenuti, inclusi tutti i file e le sottodirectory. Il comando corretto è il Rm comando seguito dal -R Flag come mostrato nella sintassi seguente.

rm -r


Quindi, se voglio rimuovere il RemoveRecurdir Con tutto il contenuto, corro:

rm -r removerecurdir/



Il successivo ls L'output mostra la directory e tutto il suo contenuto è stato rimosso correttamente.

Come rimuovere i file in modo ricorsivo per dimensioni

Questa sezione mostra come eliminare ricorsivamente file più piccoli di 10 megabyte usando il comando Trovare.

La sintassi è la seguente:

Trovare -Tipo F -zeize - -Exec rm +


Nota che nell'esempio seguente, uso sudo Per ottenere privilegi per rimuovere i file protetti.

sudo find /var /log -type f -size -10m -exec rm +



La sintassi per rimuovere i file maggiore di una dimensione specifica è molto simile. Il simbolo meno (-) deve essere sostituito da un simbolo più (+). La sintassi esatta è mostrata di seguito.

Trovare -Tipo F -zeize + -Exec rm +


Nell'esempio seguente userò la sintassi precedente per rimuovere i file superiori a 1 GB.

Trova /var /log -type f -size +1g -exec rm +


Come rimuovere i file in modo ricorsivo per estensione (tipo di file)

Il capitolo corrente spiega come eliminare i file in modo ricorsivo per estensione o tipo di file.

A casa mia ho una directory chiamata testhint. Vediamo il suo contenuto usando il albero comando.

Test Testhint/



Come puoi vedere, la directory genitore TestHint contiene un file (file1.txt) e due sottodirectory: testhint2 contenente file3.TXT e la sottodirectory contenente File3 e qualcosa.TXT.

Supponiamo che tu voglia rimuovere ricorsivamente tutti i file TXT. La sintassi è la seguente:

Trovare -tipo f -name '*.'-print -delete


Pertanto, per rimuovere tutti i file TXT in modo ricorsivo all'interno della directory genitore testhint, Eseguo il comando mostrato nella figura seguente.

Trova ~/Testhint -Type f -Name '*.txt '-print -delete



Come puoi vedere, tutti i file txt sono stati rimossi e solo File3 Senza un'estensione rimane.

Tree Testhint


Puoi anche eliminare i file per estensione utilizzando Trovare insieme a Exec comandi, come spiegherò di seguito.

Vediamo un nuovo scenario con la stessa struttura di directory ma file diversi.


L'immagine sopra mostra 4 file di registro e 3 file senza estensione.

La sintassi per rimuovere i file per estensioni utilizzando -Exec è il seguente:

Trovare -tipo f -name '*.'-exec rm -f \;


Pertanto, per rimuovere il .Registra i file dalla schermata precedente, ho eseguito il comando di seguito.

Trova ~/Testhint -Type f -Name '*.log '-exec rm -f \;



L'immagine sopra mostra tutti .tronco d'albero i file sono stati eliminati mentre altri file sono rimasti.

IL Xargs Il comando offre la stessa soluzione. La differenza tra Xargs E Exec è che Exec esegue la funzione RM ogni volta che un file corrisponde alla condizione. Il comando xargs esegue il comando rm una volta per tutti i file trovati corrispondenti alla condizione.

La sintassi per rimuovere tutti i file per estensione con Find e Xargs è la seguente:

Trovare -nome "*."-print0 | xargs -0 rm


Il nuovo scenario illustrato nello screenshot in basso mostra cinque .C file in diverse sottodirectory e cinque file senza il .estensione c.


Per rimuovere tutto .C file utilizzando Xargs Eseguo il comando come mostrato di seguito.

Trovare . -nome "*.c "-print0 | xargs -0 rm



Ancora una volta, è possibile che i file di estensione selezionati siano stati eliminati correttamente.

Eliminazione di tutti i file in modo ricorsivo in base alle autorizzazioni

Controlliamo il nuovo contenuto del testhint directory.

Ci sono quattro file con autorizzazioni complete (file2, file3.C, File6.c e file7).

Ora supponiamo che tu voglia trovare e rimuovere tutti i file con autorizzazioni complete per tutti.

La sintassi è la seguente:

Trovare -Perm -print0 | Xargs -0 Rm


Pertanto, per rimuovere tutti i file con pieno accesso a tutti gli utenti, eseguo il comando di seguito.

Trova ~/testhint -perm 777 -print0 | Xargs -0 Rm


Come eliminare i file in modo ricorsivo in base alla modifica o al tempo di creazione

L'ultima sezione di questo tutorial spiega come eliminare i file in modo ricorsivo per la creazione o il tempo di modifica.

La sintassi è la seguente:

Trova ~/testhint -perm 777 -print0 | Xargs -0 Rm


Se si desidera eliminare i file creati o modificati nell'ultimo giorno (ultime 24 ore), eseguire il comando seguente, in cui 1 è il numero di giorni e il simbolo meno (-) specifica i file creati o modificati prima del numero definito di giorni.

Trovare -Tipo f -mtime -1 -delete


Per rimuovere i file creati o modificati prima di un giorno, prima di 24 ore, basta sostituire il simbolo meno per un simbolo più.

Trovare -Tipo f -mtime +1 -delete

Conclusione

Poiché Linux è un sistema operativo molto versatile e flessibile, gli utenti hanno tecniche diverse per ottenere lo stesso risultato. Tutte le alternative spiegate sopra sono valide per quasi ogni distribuzione Linux. Alcuni dei comandi sono persino utili per alcuni sistemi UNIX. Come puoi vedere, implementarli è facile e qualsiasi utente Linux può farlo indipendentemente dal loro livello di conoscenza. Per eliminare i file ricorsivamente in base ad altre condizioni, controllare la pagina principale di ciascun comando descritto in questo articolo.