Come eliminare una directory non vuota nel Terminale?


630

Come cancello la seguente directory?

Ho scritto:

rmdir lampp

Questo errore si presenta:

rmdir: failed to remove `lampp': Directory not empty

Esiste un comando per eliminare tutti i file nella directory ed eliminare la cartella della directory?


1
Non riesco a rimuovere una directory come "Nuova cartella" usando tutti i comandi dettagliati sopra. Ha una doppia espressione. Ma voglio rimuovere quella directory. Eventuali suggerimenti saranno i benvenuti. T.Divakara, Bangalore, India

È lo spazio vuoto nel nome del file, prova a usare 'virgolette'> rmdir 'Nuova cartella' <quindi la cartella si disarma o usa i caratteri di escape per i caratteri non vivibili.
— Ken Mollerup,

2
Basta fare rm -r lampplo farà.
— John Strood,

Risposte:


877

Utilizzare il comando seguente:

rm -rf lampp

Elimina tutti i file e le cartelle contenuti nella lamppdirectory.

Nel caso in cui l'utente non disponga dell'autorizzazione per eliminare la cartella:

Aggiungi sudoall'inizio del comando:

sudo rm -rf folderName

Altrimenti, senza di sudote verrà restituita l'autorizzazione negata. Ed è una buona pratica provare a non usare -fdurante l'eliminazione di una directory:

sudo rm -r folderName

Nota: questo presuppone che tu sia già allo stesso livello della cartella che desideri eliminare nel terminale, in caso contrario:

sudo rm -r /path/to/folderName

FYI: è possibile utilizzare le lettere -f, -r, -v:

  • -f = per ignorare i file inesistenti, non richiedere mai
  • -r = per rimuovere ricorsivamente le directory e i loro contenuti
  • -v = per spiegare cosa si sta facendo

69
Secondo la mia modesta opinione, è una buona pratica non aggiungere mai la "f" al primo tentativo. Il suo scopo è quello di ignorare alcuni messaggi di avviso che possono essere importanti, specialmente se l'hai fatto accidentalmente sulla / dalla directory sbagliata. Secondo me è bene provare prima senza la "f", quindi solo se stai incontrando molti messaggi di avviso e sei sicuro che va bene ignorarli tutti, Ctrl + C fuori di esso e ripetere il comando con il " f".
— thomasrutter,


@thomasrutter ... Accetto. Proprietario di un file "xxx": root e gruppo: root può essere cancellato con l' opzione -f ; e senza sudo . Questo è il messaggio senza -f : " rm: rimuove il file regolare protetto da scrittura '/home/william/.cache/netbeans/v08.01/tmp/xxx'? _". _Pagare delicatamente.
— sarà il

95
rm -R lampp

Tuttavia, devi stare attento con un comando ricorsivo come questo, poiché è facile eliminare accidentalmente molto più di quanto previsto.

È consigliabile ricontrollare sempre in quale directory ci si trova e se è stato digitato correttamente il comando, prima di premere Invio.

Versione più sicura

rm -R -i lampp

L'aggiunta lo -irende un po 'più sicuro, perché ti chiederà ogni eliminazione. Tuttavia, se si eliminano molti file, questo non sarà molto pratico. Tuttavia, puoi provarlo prima.

Nota -f sull'opzione:

Molte persone suggeriscono di usarlo -f(combinandolo in -Rfo -rf), sostenendo che si sbarazza di fastidiosi suggerimenti. Tuttavia, nei casi normali non è necessario, e utilizzando sopprime alcuni problemi che probabilmente non vogliono conoscere. Quando lo usi, non verrai avvisato se i tuoi argomenti forniscono una directory o file inesistenti: rm non riuscirà a eliminare nulla in silenzio. Come regola generale, prova prima senza -f: se ci sono problemi con i tuoi argomenti, allora noterai. Se inizi a ricevere troppe istruzioni sui file senza accesso in scrittura, puoi provarlo con-f. In alternativa, esegui il comando da un utente (o dal superutente che utilizza sudo) che disponga di autorizzazioni complete per i file e le directory che stai eliminando per impedire in primo luogo questi messaggi.


4
Nota: è -rpossibile utilizzare anche lettere minuscole e qui ha lo stesso effetto. Tendo a usare solo lettere maiuscole -Rperché è coerente con altri comandi che uso come grepe chmod, alcuni dei quali supportano solo la forma maiuscola.
— thomasrutter,

Questo ha funzionato per me usando adb (android debug bridge) su Android. Stavo provando rm -rf ma non ha funzionato. Ho dovuto usare rm -R. Grazie.
— Raddevus,

Questa è una buona soluzione, soprattutto se inesperta nell'uso del terminale Bash. Il comando può essere abbreviato in rm -ir FOLDER.
— AlainD

24

Esistono molti modi per eliminare una directory tramite la modalità CLI. Dipende da come ti senti a tuo agio.

rm -rvf /path/to/directory  
  • -r = rimuove ricorsivamente le directory e i loro contenuti
  • -v = spiega cosa si sta facendo
  • -f = ignora i file inesistenti, non richiedere mai

Se sei nuovo in Linux, usa le pagine man dei comandi ( man rm) per maggiori opzioni e maggiore precisione.


-2

Ho avuto qualche problema con quello oggi, ma l'ho superato con sudo.

Avvertenza: assicurati di voler eliminare l'intera cosa prima di utilizzare il comando seguente.

$ sudo rm -R [Directory name]

L'ho fatto con successo oggi e ho rimosso molte directory non vuote che ho confermato che non volevo / non avevo bisogno.

Sto usando 14.04 LTS


4
"SUDO" non è un comando - "sudo" lo è. Tuttavia, non usi sudo per cancellare una directory non vuota, la usi per cancellare un file che non è di tua proprietà. Farlo ovviamente è pericoloso e non molto intelligente, poiché non dovresti eliminare alla cieca file che non possiedi.
— Marty Fried,

-3

A proposito, volevo personalmente eliminare una directory contenente un / i file protetto da scrittura (.git e sottodirectory) e alla fine ho capito che dovevo anche diventare un super utente per eliminare con successo questi file. Ecco cosa ho fatto:

#became super user
sudo su -

#deleted contents of, and then the directory, harvey_snake/
rm -R harvey_snake/

4
Non penso che tu abbia bisogno sudo suqui. Basta prefissare il rmcomando con sudo. Per motivi di sicurezza è una buona pratica (secondo i sostenitori di sudo) non rimanere nel prompt di root quando non è necessario.
— thomasrutter,

2
Inoltre, sii molto, molto sicuro, in quale directory ti trovi sudo rm -r.
— Tony Martin,

È possibile eseguire il comando root-relative ( /directory_name) in modo che non ci siano dubbi su quale directory si sta eliminando.
— Yaakov Ainspan,
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.