Come rimuovere rapidamente file e directory tramite terminale (bash shell) [chiuso]


331

Dalla finestra del terminale:

Quando uso il rmcomando può solo rimuovere i file.
Quando uso il rmdircomando rimuove solo le cartelle vuote.

Se ho una directory nidificata con file e cartelle all'interno di cartelle con file e così via, esiste un modo per eliminare tutti i file e le cartelle senza digitare il comando?

Se fa la differenza, sto usando la shell Mac Bash dal terminale, non Microsoft DOS o Linux.


Nel caso in cui desideri ripristinare i file in futuro, non utilizzare "rm" per tali casi. Usa "rm-trash": github.com/nateshmbhat/rm-trash
Natesh bhat,

Risposte:


761
rm -rf some_dir

-r "ricorsivo" -f "force" (elimina i messaggi di conferma)

Stai attento!


27
+1 e felice di aver aggiunto "Stai attento!" parte ... sicuramente un comando "Sawzall" che può trasformare rapidamente una buona giornata in una brutta .. se maneggiato con noncuranza.
itsmatt

5
come non fare "# rm -rf /" ti pentirai che:
DarthVader

1
@itsmatt: Sai cosa dicono ... dai a qualcuno una Sawzall, e all'improvviso ogni problema sembra ore di divertimento!
Jim Lewis,

164
Su un Mac? Fallo invece: brew install trashquindi trash -rf some_dirQuesto sposterà la directory indesiderata nel cestino invece di svanire nell'etere in stile Prestige . ( fonte )
zakdances,

4
L'approccio "trash" è fantastico!
anopres

59
rm -rf *

Rimuoverebbe tutto (cartelle e file) nella directory corrente.

Ma fa attenzione! Esegui questo comando solo se sei assolutamente sicuro di essere nella directory giusta.


17
rm -rf è un comando molto rischioso, dovresti sempre fare attenzione e specificare la cartella da eliminare.
eomeroff,

8
Che ne dici di correre per ls -R *primo per vedere cosa verrà eliminato darm -rf *
Hammad Khan,

Questo funziona bene per me, grazie.
Monica Hübner,

14

Si C'è. L' -ropzione dice rmdi essere r ecursive, e rimuovere l'intera gerarchia del file radicato alle sue argomentazioni; in altre parole, se viene fornita una directory, rimuoverà tutto il suo contenuto e quindi eseguirà ciò che è effettivamente un rmdir.

Le altre due opzioni che dovresti sapere sono -ie -f. -ista per i nteractive; ti viene rmrichiesto prima di eliminare ogni singolo file. -fsta per f orce; va avanti ed elimina tutto senza chiedere. -iè più sicuro, ma -fè più veloce; usalo solo se sei assolutamente sicuro di eliminare la cosa giusta. Puoi specificarli con -ro no; è un'impostazione indipendente.

E come al solito, puoi combinare gli interruttori: rm -r -iè giusto rm -ried rm -r -fè rm -rf.

Nota anche che ciò che stai imparando si applica a bashtutti i sistemi operativi Unix: OS X, Linux, FreeBSD, ecc. In effetti, rmla sintassi è la stessa in quasi tutte le shell di tutti i sistemi operativi Unix. OS X, sotto il cofano, è davvero un sistema Unix BSD.


1
Sebbene tutte le opzioni sopra menzionate siano standard tra tutti i gusti Unix elencati, ci sono anche alcune differenze. Ad esempio, OS X (ma non Linux) ha "rm -d", che rimuove file o directory vuote. Tuttavia, +1 per il punto in cui OS X è BSD internamente.
David Gelhar,

Vero --- il sottoinsieme POSIX è (praticamente) garantito per funzionare in modo coerente su Unixen, ma qualsiasi cosa al di fuori di ciò può o meno.
Antal Spector-Zabusky,

2

Quindi stavo cercando dappertutto un modo per rimuovere tutti i file in una directory ad eccezione di alcune directory e file che volevo tenere in giro. Dopo molte ricerche ho escogitato un modo per farlo usando find.

find -E . -regex './(dir1|dir2|dir3)' -and -type d -prune -o -print -exec rm -rf {} \;

Essenzialmente utilizza regex per selezionare le directory da escludere dai risultati, quindi rimuove i file rimanenti. Volevo solo metterlo qui nel caso qualcun altro ne avesse bisogno.

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.