Come rimuovo una directory e tutto il suo contenuto?


142

In bash tutto quello che so è che

rmdir directoryname

rimuoverà la directory ma solo se è vuota. C'è un modo per forzare la rimozione delle sottodirectory?

Risposte:


217

Il seguente comando lo farà per te. Fai attenzione però.

rm -rf directoryname

52
"-f" è "--force" che ignora alcuni controlli di integrità e suggerimenti. Un comando più sicuro per cominciare sarebbe rm -r directoryname.
Jim Paris,

Per qualche motivo viene visualizzato un rm: invalid option -- rerrore durante il tentativo di eliminare una directory con rm -r <directoryname>.
Sunspawn,

@Sunspawn Controlla questa domanda correlata per vedere se è così.
Marc.2377,

1
@JimParis Penso che la parola "più sicuro" sia relativa. Supponiamo di scrivere uno script da eseguire su un computer remoto. Lo script ha un comando che dovrebbe rimuovere una directory. Qui, sarebbe "più sicuro" usare rm -rf directorynamecoz per cui non vorrai che lo script sospendesse l'esecuzione, perché è in attesa dell'input dell'utente. Naturalmente, devi essere sicuro che l'eliminazione della directory non danneggerebbe.
John Red,

7

se rm -rf directorynamefallisce, prova a usare rm -R -f directoryname, o rm --recursive -f directoryname.

Se non hai fortuna con questi, dovresti considerare di reinstallare rm o cambiare shell.


Queste erano le opzioni disponibili sulla mia pagina man di rm, l'ho cercata digitando man rmper visualizzare le mie opzioni sulla cancellazione ricorsiva e le opzioni di forzatura .
saterHater

La tua rmpagina man elenca -r? Che cosa fa? (Provalo in una directory che hai creato solo a scopo di test, con solo file fittizi (e forse sottodirectory) al suo interno.) Quale sistema operativo stai usando?
G-Man,

PS Se rm -rnon funziona, sarebbe un problema del sistema operativo, non un problema di shell. (A rigor di termini, sarebbe un problema con la versione di rmquella che stai usando, quindi potresti risolverlo installando una versione diversa rmo cercando nel tuo sistema per vedere se hai già una versione diversa rmin una directory diversa da /bin.)
G-Man,

Ah giusto. Ho dimenticato di dire che sono su Ubuntu 14.04 Quando ho eseguito man rmnel mio terminale, mi ha dato un file di testo con il lessvisualizzatore di testi. Scorrendo ho trovato una voce rientrata con un intero che aveva le opzioni -R e --recursive combinate con l' opzione -r , a significare che tutti questi argomenti sono identici.
saterHater

1
modifica: hai provatosudo rm -r directoryName ? Le regole non scritte dei comandi di base sono che -rpermetteranno a un programma di funzionare in modo ricorsivo su ogni file del tuo filesystem (a partire da qualsiasi scelta tu scelga!) E che -f farà forzatamente le cose, anche se è pericoloso . 'cd', 'mv', 'ls' contengono principalmente questo principio. ls -r /sarà un duzie e cp -rf / /dev/nulldistruggerà tutto sul tuo filesystem. <- Non eseguire mai quel comando!
saterHater
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.